@sap/cds-dk 6.4.1 → 6.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/bin/bind.js +30 -34
  3. package/bin/cds.js +14 -3
  4. package/bin/deploy/index.js +6 -5
  5. package/bin/deploy/to-sqlite.js +2 -1
  6. package/bin/env.js +4 -4
  7. package/bin/migrate.js +25 -4
  8. package/bin/push.js +4 -0
  9. package/bin/watch.js +3 -3
  10. package/lib/bind/KubernetesApiAccessor.js +79 -0
  11. package/lib/bind/{BindingManager.js → bindingManager.js} +16 -15
  12. package/lib/bind/bindingResolver.js +41 -68
  13. package/lib/bind/bindingUtil.js +93 -104
  14. package/lib/bind/cfKeyProvider.js +85 -74
  15. package/lib/bind/kubernetesCredentialsProvider.js +34 -132
  16. package/lib/bind/userCdsrcJsonStorageProvider.js +12 -18
  17. package/lib/client/params.js +2 -2
  18. package/lib/client/push.js +11 -6
  19. package/lib/client/settings_manager.js +2 -1
  20. package/lib/client/subscription.js +4 -1
  21. package/lib/import/odata/v2parser.js +32 -8
  22. package/lib/import/odata/v4parser.js +5 -2
  23. package/lib/init/constants.js +1 -1
  24. package/lib/init/index.js +3 -11
  25. package/lib/init/template/approuter/files/approuter-configmap.yaml +4 -1
  26. package/lib/init/template/approuter/files/approuter-mtxs-configmap.yaml +5 -1
  27. package/lib/init/template/approuter/files/package.json +1 -1
  28. package/lib/init/template/approuter/files/values.yaml.hbs +1 -1
  29. package/lib/init/template/approuter/files/xs-app.json.hbs +2 -2
  30. package/lib/init/template/approuter/index.js +4 -5
  31. package/lib/init/template/auditlog/index.js +1 -1
  32. package/lib/init/template/data/index.js +1 -1
  33. package/lib/init/template/destinations/index.js +1 -1
  34. package/lib/init/template/enterprise-messaging/index.js +1 -1
  35. package/lib/init/template/extensibility/index.js +6 -1
  36. package/lib/init/template/hana/files/chart.yaml +4 -0
  37. package/lib/init/template/hana/files/hana.yaml +1 -0
  38. package/lib/init/template/hana/files/java/db/package.json +1 -1
  39. package/lib/init/template/hana/files/values.yaml.hbs +6 -3
  40. package/lib/init/template/hana/index.js +73 -21
  41. package/lib/init/template/helm/chart/templates/_deployment_helpers.tpl +14 -6
  42. package/lib/init/template/helm/chart/values.root.schema.json +10 -0
  43. package/lib/init/template/helm/chart/values.schema.json +11 -110
  44. package/lib/init/template/helm/index.js +2 -2
  45. package/lib/init/template/helm/subcharts/content-deployment/Chart.yaml +5 -0
  46. package/lib/init/template/helm/subcharts/content-deployment/templates/_helpers.tpl +207 -0
  47. package/lib/init/template/helm/subcharts/content-deployment/templates/job.yaml +66 -0
  48. package/lib/init/template/helm/subcharts/content-deployment/templates/secret.yaml +10 -0
  49. package/lib/init/template/helm/subcharts/content-deployment/templates/service-account.yaml +4 -0
  50. package/lib/init/template/helm/subcharts/content-deployment/templates/service-binding.yaml +28 -0
  51. package/lib/init/template/helm/subcharts/content-deployment/values-lint.yaml +5 -0
  52. package/lib/init/template/helm/subcharts/content-deployment/values.md +1014 -0
  53. package/lib/init/template/helm/subcharts/content-deployment/values.schema.json +589 -0
  54. package/lib/init/template/helm/subcharts/content-deployment/values.yaml +54 -0
  55. package/lib/init/template/helm/{subchart → subcharts/web-application}/Chart.yaml +0 -0
  56. package/lib/init/template/helm/{subchart → subcharts/web-application}/templates/_helpers.tpl +56 -50
  57. package/lib/init/template/helm/{subchart → subcharts/web-application}/templates/api-rule.yaml +1 -1
  58. package/lib/init/template/helm/{subchart → subcharts/web-application}/templates/deployment.yaml +15 -9
  59. package/lib/init/template/helm/{subchart → subcharts/web-application}/templates/network-policy.yaml +0 -0
  60. package/lib/init/template/helm/{subchart → subcharts/web-application}/templates/pod-disruption-budget.yaml +2 -2
  61. package/lib/init/template/helm/{subchart → subcharts/web-application}/templates/secret.yaml +0 -0
  62. package/lib/init/template/helm/subcharts/web-application/templates/service-account.yaml +6 -0
  63. package/lib/init/template/helm/{subchart → subcharts/web-application}/templates/service-binding.yaml +4 -3
  64. package/lib/init/template/helm/{subchart → subcharts/web-application}/templates/service.yaml +0 -0
  65. package/lib/init/template/helm/subcharts/web-application/templating.md +44 -0
  66. package/lib/init/template/helm/{subchart → subcharts/web-application}/values-lint.yaml +0 -0
  67. package/lib/init/template/helm/{subchart → subcharts/web-application}/values.md +254 -200
  68. package/lib/init/template/helm/{subchart → subcharts/web-application}/values.schema.json +82 -28
  69. package/lib/init/template/helm/{subchart → subcharts/web-application}/values.yaml +15 -5
  70. package/lib/init/template/html5-repo/files/chart.yaml +4 -0
  71. package/lib/init/template/html5-repo/files/html5-apps-deployer-configmap.yaml +14 -0
  72. package/lib/init/template/html5-repo/index.js +39 -7
  73. package/lib/init/template/kibana-logging/index.js +1 -1
  74. package/lib/init/template/lint/index.js +1 -1
  75. package/lib/init/template/multitenancy/files/saas-registry.yaml +2 -2
  76. package/lib/init/template/multitenancy/files/service-manager.yaml +1 -0
  77. package/lib/init/template/multitenancy/files/values.yaml.hbs +10 -6
  78. package/lib/init/template/multitenancy/index.js +21 -3
  79. package/lib/init/util/commandUtil.js +5 -5
  80. package/lib/init/util/merge.js +27 -1
  81. package/lib/init/util/mvnArchetypeUtil.js +1 -1
  82. package/lib/init/util/projectReader.js +2 -2
  83. package/lib/util/exec.js +3 -3
  84. package/lib/util/term.js +7 -7
  85. package/lib/watch/livereload-connect.js +187 -0
  86. package/lib/watch/livereload-server.js +12 -12
  87. package/lib/watch/node-watch.js +1 -1
  88. package/npm-shrinkwrap.json +56 -308
  89. package/package.json +1 -4
  90. package/lib/init/template/hana/files/hana-deployer-job.yaml +0 -49
  91. package/lib/init/template/html5-repo/files/_html5_deployment_helpers.tpl +0 -16
  92. package/lib/init/template/html5-repo/files/html5-apps-deployer-job.yaml +0 -61
  93. package/lib/init/util/spinner.js +0 -80
@@ -0,0 +1,589 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "https://github.tools.sap/cki/content-deployment/blob/main/values.schema.json",
4
+ "type": "object",
5
+ "required": [
6
+ "image", "bindings"
7
+ ],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "global": {
11
+ "$id": "#/properties/global",
12
+ "type": "object",
13
+ "title": "Helm global values",
14
+ "description": "For more information, see https://helm.sh/docs/chart_template_guide/subcharts_and_globals/#global-chart-values",
15
+ "x-ignore-untested": true,
16
+ "additionalProperties": true,
17
+ "properties": {
18
+ "imagePullSecret": {
19
+ "$id": "#/properties/global/imagePullSecret",
20
+ "title": "Image Pull Secret configuration",
21
+ "description": "For more information, see https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/",
22
+ "additionalProperties": true,
23
+ "type": "object",
24
+ "properties": {
25
+ "name": {
26
+ "title": "Secret name",
27
+ "description": "Name of the Kubernetes Secret, used as an image pull secret (must be of type kubernetes.io/dockerconfigjson). Can't be used with the `dockerconfigjson` option.",
28
+ "$ref": "#/definitions/KubernetesName"
29
+ },
30
+ "dockerconfigjson": {
31
+ "title": "Secret content",
32
+ "description": "The content for the dynamically generated Kubernetes Secret, which will be used as an image pull secret. Can't be used with the `name` option.",
33
+ "type": "string"
34
+ }
35
+ },
36
+ "dependencies": {
37
+ "name": {
38
+ "not": {
39
+ "required": [
40
+ "dockerconfigjson"
41
+ ]
42
+ }
43
+ },
44
+ "dockerconfigjson": {
45
+ "not": {
46
+ "required": [
47
+ "name"
48
+ ]
49
+ }
50
+ }
51
+ }
52
+ },
53
+ "image": {
54
+ "$id": "#/properties/global/image",
55
+ "title": "Image configuration",
56
+ "description": "Either name or repository is required.",
57
+ "type": "object",
58
+ "required": [],
59
+ "additionalProperties": true,
60
+ "properties": {
61
+ "tag": {
62
+ "$id": "#/properties/image/global/properties/tag",
63
+ "$ref": "#/definitions/ImageTag"
64
+ },
65
+ "registry": {
66
+ "$id": "#/properties/image/global/properties/registry",
67
+ "$ref": "#/definitions/ImageRegistry"
68
+ }
69
+ }
70
+ }
71
+ }
72
+ },
73
+ "nameOverride": {
74
+ "$id": "#/properties/nameOverride",
75
+ "title": "Chart name override",
76
+ "description": "Will be used instead of the `.Chart.Name`, e.g. when generating the Deployment name.",
77
+ "type": "string",
78
+ "pattern": "[0-9a-z][0-9a-z-.]*"
79
+ },
80
+ "fullnameOverride": {
81
+ "$id": "#/properties/fullnameOverride",
82
+ "title": "Override for the `.fullname` helper function.",
83
+ "description": "Will be used as an override for the `.fullname` helper function (i.e. `.Release.Name-.Chart.Name`).",
84
+ "type": "string",
85
+ "pattern": "[0-9a-z][0-9a-z-.]*"
86
+ },
87
+ "image": {
88
+ "$id": "#/properties/image",
89
+ "title": "Image configuration",
90
+ "type": "object",
91
+ "required": [
92
+ "repository"
93
+ ],
94
+ "additionalProperties": false,
95
+ "properties": {
96
+ "repository": {
97
+ "$id": "#/properties/image/properties/repository",
98
+ "title": "Repository of the image",
99
+ "description": "Should also include the image name (i.e. everything before the `:` sign).",
100
+ "type": "string",
101
+ "pattern": "^[\\w-./:]*[@sha256]*$"
102
+ },
103
+ "tag": {
104
+ "$id": "#/properties/image/properties/tag",
105
+ "$ref": "#/definitions/ImageTag"
106
+ },
107
+ "registry": {
108
+ "$id": "#/properties/image/properties/registry",
109
+ "$ref": "#/definitions/ImageRegistry"
110
+ }
111
+ }
112
+ },
113
+ "imagePullSecret": {
114
+ "$id": "#/properties/imagePullSecret",
115
+ "title": "Image Pull Secret configuration",
116
+ "description": "For more information, see https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/",
117
+ "additionalProperties": false,
118
+ "type": "object",
119
+ "properties": {
120
+ "name": {
121
+ "title": "Secret name",
122
+ "description": "Name of the Kubernetes Secret, used as an image pull secret (must be of type kubernetes.io/dockerconfigjson). Can't be used with the `dockerconfigjson` option.",
123
+ "$ref": "#/definitions/KubernetesName"
124
+ },
125
+ "dockerconfigjson": {
126
+ "title": "Secret content",
127
+ "description": "The content for the dynamically generated Kubernetes Secret, which will be used as an image pull secret. Can't be used with the `name` option.",
128
+ "type": "string"
129
+ }
130
+ },
131
+ "dependencies": {
132
+ "name": {
133
+ "not": {
134
+ "required": [
135
+ "dockerconfigjson"
136
+ ]
137
+ }
138
+ },
139
+ "dockerconfigjson": {
140
+ "not": {
141
+ "required": [
142
+ "name"
143
+ ]
144
+ }
145
+ }
146
+ }
147
+ },
148
+ "resources": {
149
+ "$id": "#/properties/resources",
150
+ "type": "object",
151
+ "title": "Pod resources configuration",
152
+ "additionalProperties": false,
153
+ "properties": {
154
+ "requests": {
155
+ "type": "object",
156
+ "description": "Minimal required resources for the application to operate, that will be reserved for each replica.",
157
+ "additionalProperties": false,
158
+ "properties": {
159
+ "cpu": {
160
+ "$id": "#/properties/resources/properties/requests/properties/cpu",
161
+ "description": "CPU resource units, as described here https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu",
162
+ "type": ["number", "string"]
163
+ },
164
+ "ephemeral-storage": {
165
+ "$id": "#/properties/resources/properties/requests/properties/ephemeral-storage",
166
+ "description": "Size of the local ephemeral storage, measured in bytes. For more info, see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#local-ephemeral-storage",
167
+ "type": "string"
168
+ },
169
+ "memory": {
170
+ "$id": "#/properties/resources/properties/requests/properties/memory",
171
+ "description": "Amount of memory, mesaured in bytes. For more info, see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory",
172
+ "type": "string"
173
+ }
174
+ }
175
+ },
176
+ "limits": {
177
+ "type": "object",
178
+ "additionalProperties": false,
179
+ "properties": {
180
+ "cpu": {
181
+ "$id": "#/properties/resources/properties/limits/properties/cpu",
182
+ "description": "CPU resource units, as described here https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu",
183
+ "type": ["number", "string"]
184
+ },
185
+ "ephemeral-storage": {
186
+ "$id": "#/properties/resources/properties/limits/properties/ephemeral-storage",
187
+ "description": "Size of the local ephemeral storage, measured in bytes. For more info, see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#local-ephemeral-storage",
188
+ "type": "string"
189
+ },
190
+ "memory": {
191
+ "$id": "#/properties/resources/properties/limits/properties/memory",
192
+ "description": "Amount of memory, mesaured in bytes. For more info, see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory",
193
+ "type": "string"
194
+ }
195
+ }
196
+ }
197
+ }
198
+ },
199
+ "env": {
200
+ "$id": "#/properties/env",
201
+ "description": "Key-value map of environment variables, which should be added to the Pod spec.",
202
+ "anyOf": [
203
+ {
204
+
205
+ "type": "object",
206
+ "patternProperties": {
207
+ "^[-._a-zA-Z][-._a-zA-Z0-9]*$": {
208
+ "$comment": "regex above copied from https://github.com/kubernetes/kubernetes/blob/ea0764452222146c47ec826977f49d7001b0ea8c/staging/src/k8s.io/apimachinery/pkg/util/validation/validation.go#L402",
209
+ "anyOf": [
210
+ {
211
+ "description": "Plain value of an environment variable.",
212
+ "type": ["integer", "string"]
213
+ },
214
+ {
215
+ "description": "`valueFrom` configuration for the environment variable https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/",
216
+ "type": "object",
217
+ "additionalProperties": false,
218
+ "maxProperties": 1,
219
+ "properties": {
220
+ "configMapKeyRef": {
221
+ "description": "Selects a key of a ConfigMap.",
222
+ "type": "object",
223
+ "additionalProperties": false,
224
+ "properties": {
225
+ "name": {
226
+ "description": "Name of a ConfigMap.",
227
+ "$ref": "#/definitions/KubernetesName"
228
+ },
229
+ "key": {
230
+ "description": "Key in that ConfigMap, which value will be used.",
231
+ "type": "string"
232
+ }
233
+ }
234
+ },
235
+ "secretKeyRef": {
236
+ "description": "Selects a key of a Secret.",
237
+ "type": "object",
238
+ "additionalProperties": false,
239
+ "properties": {
240
+ "name": {
241
+ "description": "Name of a Secret.",
242
+ "$ref": "#/definitions/KubernetesName"
243
+ },
244
+ "key": {
245
+ "description": "Key in that Secret, which value will be used.",
246
+ "type": "string"
247
+ }
248
+ }
249
+ },
250
+ "resourceFieldRef": {
251
+ "description": "Selects a resource of the container.",
252
+ "type": "object",
253
+ "additionalProperties": false,
254
+ "properties": {
255
+ "containerName": {
256
+ "description": "Name of a Container.",
257
+ "$ref": "#/definitions/KubernetesName"
258
+ },
259
+ "resource": {
260
+ "description": "Only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.",
261
+ "type": "string"
262
+ }
263
+ }
264
+ },
265
+ "fieldRef": {
266
+ "description": "Selects a field of the pod.",
267
+ "type": "object",
268
+ "additionalProperties": false,
269
+ "properties": {
270
+ "fieldPath": {
271
+ "type": "string",
272
+ "description": "Supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs."
273
+ }
274
+ }
275
+ }
276
+ }
277
+ }
278
+ ]
279
+ }
280
+ },
281
+ "additionalProperties": false,
282
+ "default": {}
283
+ },
284
+ {
285
+ "type": "array",
286
+ "uniqueItems": true,
287
+ "items": {
288
+ "type": "object",
289
+ "additionalProperties": false,
290
+ "maxProperties": 2,
291
+ "required": [
292
+ "name"
293
+ ],
294
+ "properties": {
295
+ "name": {
296
+ "type": "string",
297
+ "pattern": "^[-._a-zA-Z][-._a-zA-Z0-9]*$"
298
+ },
299
+ "value": {
300
+ "type": ["string", "integer"]
301
+ },
302
+ "configMapKeyRef": {
303
+ "description": "Selects a key of a ConfigMap.",
304
+ "type": "object",
305
+ "additionalProperties": false,
306
+ "properties": {
307
+ "name": {
308
+ "description": "Name of a ConfigMap.",
309
+ "$ref": "#/definitions/KubernetesName"
310
+ },
311
+ "key": {
312
+ "description": "Key in that ConfigMap, which value will be used.",
313
+ "type": "string"
314
+ }
315
+ }
316
+ },
317
+ "secretKeyRef": {
318
+ "description": "Selects a key of a Secret.",
319
+ "type": "object",
320
+ "additionalProperties": false,
321
+ "properties": {
322
+ "name": {
323
+ "description": "Name of a Secret.",
324
+ "$ref": "#/definitions/KubernetesName"
325
+ },
326
+ "key": {
327
+ "description": "Key in that Secret, which value will be used.",
328
+ "type": "string"
329
+ }
330
+ }
331
+ },
332
+ "resourceFieldRef": {
333
+ "description": "Selects a resource of the container.",
334
+ "type": "object",
335
+ "additionalProperties": false,
336
+ "properties": {
337
+ "containerName": {
338
+ "description": "Name of a Container.",
339
+ "$ref": "#/definitions/KubernetesName"
340
+ },
341
+ "resource": {
342
+ "description": "Only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.",
343
+ "type": "string"
344
+ }
345
+ }
346
+ },
347
+ "fieldRef": {
348
+ "description": "Selects a field of the pod.",
349
+ "type": "object",
350
+ "additionalProperties": false,
351
+ "properties": {
352
+ "fieldPath": {
353
+ "type": "string",
354
+ "description": "Supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs."
355
+ }
356
+ }
357
+ }
358
+ }
359
+ }
360
+ }
361
+ ],
362
+ "default": {}
363
+ },
364
+ "envSecretNames": {
365
+ "$id": "#/properties/envSecretNames",
366
+ "description": "[Deprecated] Use `envFrom` instead",
367
+ "type": "array",
368
+ "uniqueItems": true,
369
+ "items": {
370
+ "type": "string",
371
+ "$ref": "#/definitions/KubernetesName"
372
+ }
373
+ },
374
+ "envFrom": {
375
+ "$id": "#/properties/envFrom",
376
+ "description": "List of sources to populate environment variables in the pod.",
377
+ "type": "array",
378
+ "default": [],
379
+ "items": {
380
+ "type": "object",
381
+ "oneOf": [
382
+ {
383
+ "additionalProperties": false,
384
+ "properties": {
385
+ "configMapRef": {
386
+ "description": "The contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.",
387
+ "properties": {
388
+ "name": {
389
+ "description": "Name of a ConfigMap.",
390
+ "type": "string"
391
+ },
392
+ "tpl": {
393
+ "description": "Flag which tells whether the name is a template string or not.",
394
+ "type": "boolean",
395
+ "default": false
396
+ }
397
+ },
398
+ "required": [ "name" ],
399
+ "additionalProperties": false,
400
+ "type": "object"
401
+ }
402
+ },
403
+ "required": [ "configMapRef" ]
404
+ },
405
+ {
406
+ "additionalProperties": false,
407
+ "properties": {
408
+ "secretRef": {
409
+ "description": "The contents of the target Secret's Data field will represent the key-value pairs as environment variables.",
410
+ "properties": {
411
+ "name": {
412
+ "description": "Name of a Secret.",
413
+ "type": "string"
414
+ },
415
+ "tpl": {
416
+ "description": "Flag which tells whether the name is a template string or not.",
417
+ "type": "boolean",
418
+ "default": false
419
+ }
420
+ },
421
+ "required": [ "name" ],
422
+ "additionalProperties": false,
423
+ "type": "object"
424
+ }
425
+ },
426
+ "required": [ "secretRef" ]
427
+ }
428
+ ]
429
+ }
430
+ },
431
+ "ttlDaysAfterFinished": {
432
+ "$id": "#/properties/ttlDaysAfterFinished",
433
+ "title": "Time to keep the Job after it has finished.",
434
+ "description": "Number of days to keep the Kubernetes Job once it is finished. 0 means it is removed as soon as it is finished.",
435
+ "type": "integer",
436
+ "minimum": 0,
437
+ "default": 14
438
+ },
439
+ "bindings": {
440
+ "$id": "#/properties/bindings",
441
+ "title": "Service Binding configuration",
442
+ "type": "object",
443
+ "additionalProperties": false,
444
+ "minProperties": 1,
445
+ "patternProperties": {
446
+ "^[-._a-zA-Z][-._a-zA-Z0-9]*$": {
447
+ "oneOf": [
448
+ {
449
+ "type": "object",
450
+ "additionalProperties": false,
451
+ "required": [
452
+ "fromSecret"
453
+ ],
454
+ "properties": {
455
+ "fromSecret": {
456
+ "description": "Name of a Kubernetes Secret, with the binding content, compliant to the SAP Kubernetes Service Binding spec https://github.tools.sap/Kubernetes-Service-Bindings/doc/",
457
+ "$ref": "#/definitions/KubernetesName"
458
+ }
459
+ }
460
+ },
461
+ {
462
+ "type": "object",
463
+ "additionalProperties": false,
464
+ "properties": {
465
+ "serviceInstanceName": {
466
+ "description": "Name of a BTP Operator Service Instance, created by the `service-instance` Helm chart. Can't be used with the `serviceInstanceFullname` option.",
467
+ "$ref": "#/definitions/KubernetesName"
468
+ },
469
+ "serviceInstanceFullname": {
470
+ "description": "Full name of a BTP Operator Service Instance. Can't be used with the `serviceInstanceName` option.",
471
+ "$ref": "#/definitions/KubernetesName"
472
+ },
473
+ "externalName": {
474
+ "description": "The name for the service binding in SAP BTP",
475
+ "type": "string"
476
+ },
477
+ "secretName": {
478
+ "description": "The name of the secret where the credentials are stored.",
479
+ "$ref": "#/definitions/KubernetesName"
480
+ },
481
+ "parameters": {
482
+ "description": "Some services support the provisioning of additional configuration parameters during the bind request. For the list of supported parameters, check the documentation of the particular service offering.",
483
+ "type": "object"
484
+ },
485
+ "parametersFrom": {
486
+ "description": "List of sources to populate parameters.",
487
+ "type": "array",
488
+ "items": {
489
+ "anyOf": [
490
+ {
491
+ "type": "object",
492
+ "description": "Kubernetes Secret as a parameters source.",
493
+ "additionalProperties": false,
494
+ "properties": {
495
+ "secretKeyRef": {
496
+ "type": "object",
497
+ "additionalProperties": false,
498
+ "required": [
499
+ "name",
500
+ "key"
501
+ ],
502
+ "properties": {
503
+ "name": {
504
+ "description": "Name of a Secret.",
505
+ "$ref": "#/definitions/KubernetesName"
506
+ },
507
+ "key": {
508
+ "description": "Key in that Secret, which contains a string that represents the json to include in the set of parameters to be sent to the broker.",
509
+ "type": "string"
510
+ }
511
+ }
512
+ }
513
+ }
514
+ },
515
+ {
516
+ "type": "object",
517
+ "description": "Kubernetes Config Map as a parameters source.",
518
+ "additionalProperties": false,
519
+ "properties": {
520
+ "configMapKeyRef": {
521
+ "type": "object",
522
+ "additionalProperties": false,
523
+ "required": [
524
+ "name",
525
+ "key"
526
+ ],
527
+ "properties": {
528
+ "name": {
529
+ "description": "Name of a Config Map",
530
+ "$ref": "#/definitions/KubernetesName"
531
+ },
532
+ "key": {
533
+ "description": "Key in that Config Map, which contains a string that represents the json to include in the set of parameters to be sent to the broker.",
534
+ "type": "string"
535
+ }
536
+ }
537
+ }
538
+ }
539
+ }
540
+ ]
541
+ }
542
+ },
543
+ "credentialsRotationPolicy": {
544
+ "description": "Holds automatic credentials rotation configuration. For more details, see https://github.com/SAP/sap-btp-service-operator#spec-1",
545
+ "type": "object"
546
+ }
547
+ },
548
+ "dependencies": {
549
+ "serviceInstanceName": {
550
+ "not": {
551
+ "required": [
552
+ "serviceInstanceFullname"
553
+ ]
554
+ }
555
+ },
556
+ "serviceInstanceFullname": {
557
+ "not": {
558
+ "required": [
559
+ "serviceInstanceName"
560
+ ]
561
+ }
562
+ }
563
+ }
564
+ }
565
+ ]
566
+ }
567
+ }
568
+ }
569
+ },
570
+ "definitions": {
571
+ "KubernetesName": {
572
+ "type": "string",
573
+ "$comment": "running `kubectl create secret generic invalid_name` will print this regex",
574
+ "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"
575
+ },
576
+ "ImageRegistry": {
577
+ "type": "string",
578
+ "title": "Image registry",
579
+ "description": "Image registry e.g. docker.io",
580
+ "pattern": "^[\\w-./]+$"
581
+ },
582
+ "ImageTag": {
583
+ "title": "Image tag",
584
+ "description": "Image tag without the name (everything after the `:` sign, potentially including the `@sha256` section at the end).",
585
+ "type": "string",
586
+ "$comment": "Copied from https://github.com/containers/image/blob/18d58d29fdc4fc32fb8a8a6d186b829b217f1bf5/docker/reference/regexp.go#L68-L70",
587
+ "pattern": "^((?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])(?:(?:\\.(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]))+)?(?::[0-9]+)?/)?[a-z0-9]+(?:(?:(?:[._]|__|[-]*)[a-z0-9]+)+)?(?:(?:/[a-z0-9]+(?:(?:(?:[._]|__|[-]*)[a-z0-9]+)+)?)+)?)(?::([\\w][\\w.-]{0,127}))?(?:@([A-Za-z][A-Za-z0-9]*(?:[-_+.][A-Za-z][A-Za-z0-9]*)*[:][[:xdigit:]]{32,}))?$" }
588
+ }
589
+ }
@@ -0,0 +1,54 @@
1
+ global:
2
+ imagePullSecret: {}
3
+ # name: ""
4
+ # dockerconfigjson: ""
5
+ image: {}
6
+ # registry: gcr.io/my-project
7
+ # tag: latest
8
+
9
+ image: {}
10
+ # repository: repo/image
11
+ # registry: gcr.io/my-project
12
+ # tag: latest
13
+
14
+ imagePullSecret: {}
15
+ # name: ""
16
+ # dockerconfigjson: ""
17
+
18
+ # resources:
19
+ # limits:
20
+ # cpu: 100m
21
+ # ephemeral-storage: 1G
22
+ # memory: 1G
23
+ # requests:
24
+ # cpu: 100m
25
+ # ephemeral-storage: 1G
26
+ # memory: 1G
27
+
28
+ env: {}
29
+
30
+ envFrom: []
31
+ # - configMapRef:
32
+ # name: my-configmap1
33
+ # - secretRef:
34
+ # name: my-secret-ref1
35
+
36
+ # bindings:
37
+ # ui5-repo-servicerepo:
38
+ # serviceInstanceName: ui5-repo-instance
39
+ # externalName: ui5-kyma-binding
40
+ # secretName: ui5-repo-binding-secret
41
+ # parameters:
42
+ # foo: bar
43
+ # parametersFrom:
44
+ # - secretKeyRef:
45
+ # key: test
46
+ # name: test
47
+ # credentialsRotationPolicy:
48
+ # enabled: true
49
+ # hana:
50
+ # serviceInstanceName: hana-manual
51
+ # portal:
52
+ # fromSecret: manual-secret # user-provided-service
53
+
54
+ ttlDaysAfterFinished: 14