blob: fc21962b59ed09d6ed66f0411dba1c66bb9055b4 [file] [log] [blame]
Sergiusz Bazanskie31d64f2019-10-02 20:59:26 +02001// Local extensions to kube.upstream.libsonnet.
Sergiusz Bazanski4d9e72c2019-01-13 22:06:33 +01002
Sergiusz Bazanskie31d64f2019-10-02 20:59:26 +02003local kube = import "kube.upstream.libsonnet";
Sergiusz Bazanski4d9e72c2019-01-13 22:06:33 +01004
Sergiusz Bazanskie31d64f2019-10-02 20:59:26 +02005kube {
6 ClusterIssuer(name): kube._Object("certmanager.k8s.io/v1alpha1", "ClusterIssuer", name) {
7 spec: error "spec must be defined",
Sergiusz Bazanski4d9e72c2019-01-13 22:06:33 +01008 },
Sergiusz Bazanskie31d64f2019-10-02 20:59:26 +02009 Issuer(name): kube._Object("certmanager.k8s.io/v1alpha1", "Issuer", name) {
10 spec: error "spec must be defined",
Sergiusz Bazanski4d9e72c2019-01-13 22:06:33 +010011 },
Sergiusz Bazanskie31d64f2019-10-02 20:59:26 +020012 Certificate(name): kube._Object("certmanager.k8s.io/v1alpha1", "Certificate", name) {
13 spec: error "spec must be defined",
Sergiusz Bazanski4d9e72c2019-01-13 22:06:33 +010014 },
Sergiusz Bazanski114edc22020-02-18 22:54:18 +010015
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 Bazanskid436de22020-02-21 17:10:42 +010027
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 Bazanski4d9e72c2019-01-13 22:06:33 +010099}