Skip to content

Commit 195f52b

Browse files
committed
feat: init plugin options structure adr
1 parent daf781e commit 195f52b

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# 011-greenhouse-plugin-options-structure
2+
3+
- Status: [draft ] <!-- optional -->
4+
- Deciders: [Uwe, Ivo, Esther, Andreas] <!-- optional -->
5+
- Date: [YYYY-MM-DD when the decision was last updated] <!-- optional. To customize the ordering without relying on Git creation dates and filenames -->
6+
- Tags: [greenhouse / cloudoperators] <!-- optional -->
7+
- Technical Story: [description | ticket/issue URL] <!-- optional -->
8+
9+
## Context and Problem Statement
10+
11+
Some plugins require or allow a lot of configuration options which are currently kubernetes CRD style situated in deeply nested object structures.
12+
We auto generate the edit screens for the plugins and the deep nesting makes the forms hard to read and use.
13+
Examples:
14+
15+
- `kubeMonitoring.prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.resources.requests.storage`
16+
- `kubeMonitoring.prometheus.annotations.nginx\.ingress\.kubernetes\.io/auth-tls-secret`
17+
where the yaml is like
18+
19+
```yaml
20+
kubeMonitoring:
21+
prometheus:
22+
annotations:
23+
nginx.ingress.kubernetes.io/auth-tls-secret: namespace/secret
24+
```
25+
26+
The goal of this ADR is to find a way to automatically structure these config options better.
27+
28+
**Discussion:**
29+
30+
- configure display names for the mandatory/important config options
31+
- flat structure in config map that maps to the nested structure
32+
33+
## Decision Drivers <!-- optional -->
34+
35+
- [driver 1, e.g., a force, facing concern, …]
36+
- [driver 2, e.g., a force, facing concern, …]
37+
- … <!-- numbers of drivers can vary -->
38+
39+
## Considered Options
40+
41+
- [option 1]
42+
- [option 2]
43+
- [option 3]
44+
- … <!-- numbers of options can vary -->
45+
46+
## Decision Outcome
47+
48+
Chosen option: "[option 1]",
49+
because [justification. e.g., only option, which meets k.o. criterion decision driver | which resolves force force | … | comes out best (see below)].
50+
51+
### Positive Consequences <!-- optional -->
52+
53+
- [e.g., improvement of quality attribute satisfaction, follow-up decisions required, …]
54+
- …
55+
56+
### Negative Consequences <!-- optional -->
57+
58+
- [e.g., compromising quality attribute, follow-up decisions required, …]
59+
- …
60+
61+
## Pros and Cons of the Options | Evaluation of options <!-- optional -->
62+
63+
### [option 1]
64+
65+
[example | description | pointer to more information | …] <!-- optional -->
66+
67+
| Decision Driver | Rating | Reason |
68+
|---------------------|--------|-------------------------------|
69+
| [decision driver a] | +++ | Good, because [argument a] | |
70+
| [decision driver b] | --- | Good, because [argument b] |
71+
| [decision driver c] | -- | Bad, because [argument c] |
72+
| [decision driver d] | o | Neutral, because [argument d] |
73+
74+
### [option 2]
75+
76+
[example | description | pointer to more information | …] <!-- optional -->
77+
78+
| Decision Driver | Rating | Reason |
79+
|---------------------|--------|-------------------------------|
80+
| [decision driver a] | +++ | Good, because [argument a] | |
81+
| [decision driver b] | --- | Good, because [argument b] |
82+
| [decision driver c] | -- | Bad, because [argument c] |
83+
| [decision driver d] | o | Neutral, because [argument d] |
84+
85+
### [option 3]
86+
87+
[example | description | pointer to more information | …] <!-- optional -->
88+
89+
| Decision Driver | Rating | Reason |
90+
|---------------------|--------|-------------------------------|
91+
| [decision driver a] | +++ | Good, because [argument a] | |
92+
| [decision driver b] | --- | Good, because [argument b] |
93+
| [decision driver c] | -- | Bad, because [argument c] |
94+
| [decision driver d] | o | Neutral, because [argument d] |
95+
96+
## Related Decision Records <!-- optional -->
97+
98+
[previous decision record, e.g., an ADR, which is solved by this one | next decision record, e.g., an ADR, which solves this one | … | pointer to more information]
99+
100+
## Links <!-- optional -->
101+
102+
- [Link type](link to adr) <!-- example: Refined by [xxx](yyyymmdd-xxx.md) -->
103+
- … <!-- numbers of links can vary -->

0 commit comments

Comments
 (0)