Skip to content

Commit eacf63c

Browse files
authored
RHOAIENG-23204: feat: Introduce dspa secret controller to handle ds-pipeline-config lifecycle (#607)
* Introduce dspa secret controller to handle ds-pipeline-config lifecycle * Refactor and test dspa secret lifecycle and related logic - Added tests for secret mounting and lifecycle - Improved logic around optional dspa/dashboard - Minor fixes and cleanup * Allow update from webhook if generation is one * If the Dashboard CR is absent we still build the Secret, with dashboard_url set to an empty string * Handle missing dspa crd case is is not in the cluster Conditianaly add or not public_api on the json value make happy path happy again
1 parent d4c50ad commit eacf63c

File tree

12 files changed

+2812
-13
lines changed

12 files changed

+2812
-13
lines changed
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
apiVersion: apiextensions.k8s.io/v1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
annotations:
5+
controller-gen.kubebuilder.io/version: v0.16.1
6+
name: dashboards.components.platform.opendatahub.io
7+
spec:
8+
group: components.platform.opendatahub.io
9+
names:
10+
kind: Dashboard
11+
listKind: DashboardList
12+
plural: dashboards
13+
singular: dashboard
14+
scope: Cluster
15+
versions:
16+
- additionalPrinterColumns:
17+
- description: Ready
18+
jsonPath: .status.conditions[?(@.type=="Ready")].status
19+
name: Ready
20+
type: string
21+
- description: Reason
22+
jsonPath: .status.conditions[?(@.type=="Ready")].reason
23+
name: Reason
24+
type: string
25+
- description: URL
26+
jsonPath: .status.url
27+
name: URL
28+
type: string
29+
name: v1alpha1
30+
schema:
31+
openAPIV3Schema:
32+
description: Dashboard is the Schema for the dashboards API
33+
properties:
34+
apiVersion:
35+
description: |-
36+
APIVersion defines the versioned schema of this representation of an object.
37+
Servers should convert recognized schemas to the latest internal value, and
38+
may reject unrecognized values.
39+
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
40+
type: string
41+
kind:
42+
description: |-
43+
Kind is a string value representing the REST resource this object represents.
44+
Servers may infer this from the endpoint the client submits requests to.
45+
Cannot be updated.
46+
In CamelCase.
47+
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
48+
type: string
49+
metadata:
50+
type: object
51+
spec:
52+
description: DashboardSpec defines the desired state of Dashboard
53+
properties:
54+
devFlags:
55+
description: Add developer fields
56+
properties:
57+
manifests:
58+
description: List of custom manifests for the given component
59+
items:
60+
properties:
61+
contextDir:
62+
default: manifests
63+
description: contextDir is the relative path to the folder
64+
containing manifests in a repository, default value "manifests"
65+
type: string
66+
sourcePath:
67+
default: ""
68+
description: 'sourcePath is the subpath within contextDir
69+
where kustomize builds start. Examples include any sub-folder
70+
or path: `base`, `overlays/dev`, `default`, `odh` etc.'
71+
type: string
72+
uri:
73+
default: ""
74+
description: uri is the URI point to a git repo with tag/branch.
75+
e.g. https://github.com/org/repo/tarball/<tag/branch>
76+
type: string
77+
type: object
78+
type: array
79+
type: object
80+
type: object
81+
status:
82+
description: DashboardStatus defines the observed state of Dashboard
83+
properties:
84+
conditions:
85+
items:
86+
properties:
87+
lastHeartbeatTime:
88+
description: |-
89+
The last time we got an update on a given condition, this should not be set and is
90+
present only for backward compatibility reasons
91+
format: date-time
92+
type: string
93+
lastTransitionTime:
94+
description: |-
95+
lastTransitionTime is the last time the condition transitioned from one status to another.
96+
This should be when the underlying condition changed.
97+
If that is not known, then using the time when the API field changed is acceptable.
98+
format: date-time
99+
type: string
100+
message:
101+
description: message is a human-readable message indicating
102+
details about the transition.
103+
type: string
104+
observedGeneration:
105+
description: |-
106+
observedGeneration represents the .metadata.generation that the condition was set based upon.
107+
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration
108+
is 9, the condition is out of date with respect to the current state of the instance.
109+
format: int64
110+
minimum: 0
111+
type: integer
112+
reason:
113+
description: |-
114+
reason contains a programmatic identifier indicating the reason for the condition's last transition.
115+
The value should be a CamelCase string.
116+
type: string
117+
severity:
118+
description: |-
119+
Severity with which to treat failures of this type of condition.
120+
When this is not specified, it defaults to Error.
121+
type: string
122+
status:
123+
description: status of the condition, one of True, False, Unknown.
124+
enum:
125+
- "True"
126+
- "False"
127+
- Unknown
128+
type: string
129+
type:
130+
description: type of condition in CamelCase or in foo.example.com/CamelCase.
131+
maxLength: 316
132+
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
133+
type: string
134+
required:
135+
- status
136+
- type
137+
type: object
138+
type: array
139+
x-kubernetes-list-type: atomic
140+
observedGeneration:
141+
description: The generation observed by the resource controller.
142+
format: int64
143+
type: integer
144+
phase:
145+
type: string
146+
url:
147+
type: string
148+
type: object
149+
type: object
150+
x-kubernetes-validations:
151+
- message: Dashboard name must be default-dashboard
152+
rule: self.metadata.name == 'default-dashboard'
153+
served: true
154+
storage: true
155+
subresources:
156+
status: {}

0 commit comments

Comments
 (0)