Sergiusz Bazanski | e31d64f | 2019-10-02 20:59:26 +0200 | [diff] [blame] | 1 | // Local extensions to kube.upstream.libsonnet. |
Sergiusz Bazanski | 4d9e72c | 2019-01-13 22:06:33 +0100 | [diff] [blame] | 2 | |
Sergiusz Bazanski | e31d64f | 2019-10-02 20:59:26 +0200 | [diff] [blame] | 3 | local kube = import "kube.upstream.libsonnet"; |
Sergiusz Bazanski | 4d9e72c | 2019-01-13 22:06:33 +0100 | [diff] [blame] | 4 | |
Sergiusz Bazanski | e31d64f | 2019-10-02 20:59:26 +0200 | [diff] [blame] | 5 | kube { |
| 6 | ClusterIssuer(name): kube._Object("certmanager.k8s.io/v1alpha1", "ClusterIssuer", name) { |
| 7 | spec: error "spec must be defined", |
Sergiusz Bazanski | 4d9e72c | 2019-01-13 22:06:33 +0100 | [diff] [blame] | 8 | }, |
Sergiusz Bazanski | e31d64f | 2019-10-02 20:59:26 +0200 | [diff] [blame] | 9 | Issuer(name): kube._Object("certmanager.k8s.io/v1alpha1", "Issuer", name) { |
| 10 | spec: error "spec must be defined", |
Sergiusz Bazanski | 4d9e72c | 2019-01-13 22:06:33 +0100 | [diff] [blame] | 11 | }, |
Sergiusz Bazanski | e31d64f | 2019-10-02 20:59:26 +0200 | [diff] [blame] | 12 | Certificate(name): kube._Object("certmanager.k8s.io/v1alpha1", "Certificate", name) { |
| 13 | spec: error "spec must be defined", |
Sergiusz Bazanski | 4d9e72c | 2019-01-13 22:06:33 +0100 | [diff] [blame] | 14 | }, |
Sergiusz Bazanski | 114edc2 | 2020-02-18 22:54:18 +0100 | [diff] [blame] | 15 | |
| 16 | CephObjectStoreUser(name): kube._Object("ceph.rook.io/v1", "CephObjectStoreUser", name) { |
| 17 | local user = self, |
| 18 | spec: error "spec must be defined", |
| 19 | |
| 20 | // Name of the secret that contains the login data for this user. |
| 21 | // This secret is created in the same namespace as the ceph cluster, so |
| 22 | // unfortunately you can't really refer to it directly. |
| 23 | // We should write some automation to copy these secrets over in a |
| 24 | // secure way. |
| 25 | secret_name:: "rook-ceph-object-user-%s-%s" % [user.spec.store, user.spec.displayName], |
| 26 | }, |
Sergiusz Bazanski | d436de2 | 2020-02-21 17:10:42 +0100 | [diff] [blame] | 27 | |
| 28 | // Make OpenAPI v3 schema specification less painful. |
| 29 | OpenAPI:: { |
| 30 | Validation(obj):: { |
| 31 | openAPIV3Schema: obj.render, |
| 32 | }, |
| 33 | |
| 34 | Dict:: { |
| 35 | local dict = self, |
| 36 | required:: false, |
| 37 | |
| 38 | local requiredList = [ |
| 39 | k for k in std.filter(function(k) dict[k].required, std.objectFields(dict)) |
| 40 | ], |
| 41 | |
| 42 | render:: { |
| 43 | properties: { |
| 44 | [k]: dict[k].render |
| 45 | for k in std.objectFields(dict) |
| 46 | }, |
| 47 | } + (if std.length(requiredList) > 0 then { |
| 48 | required: requiredList, |
| 49 | } else {}), |
| 50 | }, |
| 51 | |
| 52 | Array(items):: { |
| 53 | required:: false, |
| 54 | render:: { |
| 55 | type: "array", |
| 56 | items: items.render, |
| 57 | }, |
| 58 | }, |
| 59 | |
| 60 | Integer:: { |
| 61 | local integer = self, |
| 62 | required:: false, |
| 63 | render:: { |
| 64 | type: "integer", |
| 65 | } + (if integer.minimum != null then { |
| 66 | minimum: integer.minimum, |
| 67 | } else {}) + (if integer.maximum != null then { |
| 68 | maximum: integer.maximum, |
| 69 | } else {}), |
| 70 | |
| 71 | minimum:: null, |
| 72 | maximum:: null, |
| 73 | }, |
| 74 | |
| 75 | String:: { |
| 76 | local string = self, |
| 77 | required:: false, |
| 78 | render:: { |
| 79 | type: "string", |
| 80 | } + (if string.pattern != null then { |
| 81 | pattern: string.pattern, |
| 82 | } else {}), |
| 83 | |
| 84 | pattern:: null, |
| 85 | }, |
| 86 | |
| 87 | Boolean:: { |
| 88 | required:: false, |
| 89 | render:: { |
| 90 | type: "boolean", |
| 91 | }, |
| 92 | }, |
| 93 | |
| 94 | Any:: { |
| 95 | required:: false, |
| 96 | render:: {}, |
| 97 | }, |
| 98 | }, |
Sergiusz Bazanski | 4d9e72c | 2019-01-13 22:06:33 +0100 | [diff] [blame] | 99 | } |