Skip to content

Commit 210bde1

Browse files
committed
feat: Mapping component versions to RHOAI releases
1 parent 0c16075 commit 210bde1

File tree

22 files changed

+493
-58
lines changed

22 files changed

+493
-58
lines changed

apis/datasciencecluster/v1/datasciencecluster_types.go

+1-7
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,6 @@ type Components struct {
8787
TrainingOperator trainingoperator.TrainingOperator `json:"trainingoperator,omitempty"`
8888
}
8989

90-
// ComponentsStatus defines the custom status of DataScienceCluster components.
91-
type ComponentsStatus struct {
92-
// ModelRegistry component status
93-
ModelRegistry *status.ModelRegistryStatus `json:"modelregistry,omitempty"`
94-
}
95-
9690
// DataScienceClusterStatus defines the observed state of DataScienceCluster.
9791
type DataScienceClusterStatus struct {
9892
// Phase describes the Phase of DataScienceCluster reconciliation state
@@ -114,7 +108,7 @@ type DataScienceClusterStatus struct {
114108

115109
// Expose component's specific status
116110
// +optional
117-
Components ComponentsStatus `json:"components,omitempty"`
111+
Components map[string]status.ComponentStatus `json:"components,omitempty"`
118112

119113
// Version and release type
120114
Release cluster.Release `json:"release,omitempty"`

apis/datasciencecluster/v1/zz_generated.deepcopy.go

+7-21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/codeflare/codeflare.go

+33
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,17 @@ import (
88
"fmt"
99
"path/filepath"
1010

11+
"github.com/blang/semver/v4"
12+
"github.com/joho/godotenv"
1113
operatorv1 "github.com/openshift/api/operator/v1"
14+
"github.com/operator-framework/api/pkg/lib/version"
1215
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1316
"sigs.k8s.io/controller-runtime/pkg/client"
1417
logf "sigs.k8s.io/controller-runtime/pkg/log"
1518

1619
dsciv1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/dscinitialization/v1"
1720
"github.com/opendatahub-io/opendatahub-operator/v2/components"
21+
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
1822
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
1923
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
2024
)
@@ -71,6 +75,35 @@ func (c *CodeFlare) GetComponentName() string {
7175
return ComponentName
7276
}
7377

78+
func (c *CodeFlare) GetUpstreamReleaseStatus() status.UpstreamReleases {
79+
var componentVersion semver.Version
80+
var repositoryURL string
81+
var releaseDetails = make([]status.ComponentReleaseStatus, 0)
82+
var releaseStatus status.UpstreamReleases
83+
84+
env, err := godotenv.Read(filepath.Join(deploy.DefaultManifestPath, ComponentName, ".env"))
85+
86+
if err != nil {
87+
return status.UpstreamReleases{}
88+
}
89+
if env != nil {
90+
componentVersion, err = semver.Parse(env["UPSTREAM_RELEASE_VERSION"])
91+
92+
if err != nil {
93+
return status.UpstreamReleases{}
94+
}
95+
repositoryURL = env["REPOSITORY_URL"]
96+
}
97+
componentReleaseStatus := status.ComponentReleaseStatus{
98+
Name: status.Platform(ComponentName),
99+
DisplayName: CodeflareOperator,
100+
Version: version.OperatorVersion{Version: componentVersion},
101+
RepoURL: repositoryURL}
102+
releaseDetails = append(releaseDetails, componentReleaseStatus)
103+
releaseStatus.UpstreamRelease = releaseDetails
104+
return releaseStatus
105+
}
106+
74107
func (c *CodeFlare) ReconcileComponent(ctx context.Context,
75108
cli client.Client,
76109
owner metav1.Object,

components/component.go

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"sigs.k8s.io/controller-runtime/pkg/client"
1515

1616
dsciv1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/dscinitialization/v1"
17+
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
1718
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
1819
)
1920

@@ -86,6 +87,7 @@ type ComponentInterface interface {
8687
owner metav1.Object, DSCISpec *dsciv1.DSCInitializationSpec, platform cluster.Platform, currentComponentStatus bool) error
8788
Cleanup(ctx context.Context, cli client.Client, owner metav1.Object, DSCISpec *dsciv1.DSCInitializationSpec) error
8889
GetComponentName() string
90+
GetUpstreamReleaseStatus() status.UpstreamReleases
8991
GetManagementState() operatorv1.ManagementState
9092
OverrideManifests(ctx context.Context, platform cluster.Platform) error
9193
UpdatePrometheusConfig(cli client.Client, logger logr.Logger, enable bool, component string) error

components/dashboard/dashboard.go

+5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919

2020
dsciv1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/dscinitialization/v1"
2121
"github.com/opendatahub-io/opendatahub-operator/v2/components"
22+
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
2223
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
2324
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
2425
)
@@ -82,6 +83,10 @@ func (d *Dashboard) GetComponentName() string {
8283
return ComponentNameUpstream
8384
}
8485

86+
func (d *Dashboard) GetUpstreamReleaseStatus() status.UpstreamReleases {
87+
return status.UpstreamReleases{}
88+
}
89+
8590
func (d *Dashboard) ReconcileComponent(ctx context.Context,
8691
cli client.Client,
8792
owner metav1.Object,

components/datasciencepipelines/datasciencepipelines.go

+32
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ import (
88
"fmt"
99
"path/filepath"
1010

11+
"github.com/blang/semver/v4"
12+
"github.com/joho/godotenv"
1113
operatorv1 "github.com/openshift/api/operator/v1"
1214
conditionsv1 "github.com/openshift/custom-resource-status/conditions/v1"
15+
"github.com/operator-framework/api/pkg/lib/version"
1316
corev1 "k8s.io/api/core/v1"
1417
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
1518
k8serr "k8s.io/apimachinery/pkg/api/errors"
@@ -92,6 +95,35 @@ func (d *DataSciencePipelines) GetComponentName() string {
9295
return ComponentName
9396
}
9497

98+
func (d *DataSciencePipelines) GetUpstreamReleaseStatus() status.UpstreamReleases {
99+
var componentVersion semver.Version
100+
var repositoryURL string
101+
var releaseDetails = make([]status.ComponentReleaseStatus, 0)
102+
var releaseStatus status.UpstreamReleases
103+
104+
env, err := godotenv.Read(filepath.Join(deploy.DefaultManifestPath, ComponentName, ".env"))
105+
106+
if err != nil {
107+
return status.UpstreamReleases{}
108+
}
109+
if env != nil {
110+
componentVersion, err = semver.Parse(env["UPSTREAM_RELEASE_VERSION"])
111+
112+
if err != nil {
113+
return status.UpstreamReleases{}
114+
}
115+
repositoryURL = env["REPOSITORY_URL"]
116+
}
117+
componentReleaseStatus := status.ComponentReleaseStatus{
118+
Name: status.Platform(ComponentName),
119+
DisplayName: ComponentName,
120+
Version: version.OperatorVersion{Version: componentVersion},
121+
RepoURL: repositoryURL}
122+
releaseDetails = append(releaseDetails, componentReleaseStatus)
123+
releaseStatus.UpstreamRelease = releaseDetails
124+
return releaseStatus
125+
}
126+
95127
func (d *DataSciencePipelines) ReconcileComponent(ctx context.Context,
96128
cli client.Client,
97129
owner metav1.Object,

components/kserve/kserve.go

+33
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,18 @@ import (
88
"path/filepath"
99
"strings"
1010

11+
"github.com/blang/semver/v4"
12+
"github.com/joho/godotenv"
1113
operatorv1 "github.com/openshift/api/operator/v1"
14+
"github.com/operator-framework/api/pkg/lib/version"
1215
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1316
"sigs.k8s.io/controller-runtime/pkg/client"
1417
logf "sigs.k8s.io/controller-runtime/pkg/log"
1518

1619
dsciv1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/dscinitialization/v1"
1720
infrav1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/infrastructure/v1"
1821
"github.com/opendatahub-io/opendatahub-operator/v2/components"
22+
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
1923
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
2024
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
2125
)
@@ -110,6 +114,35 @@ func (k *Kserve) GetComponentName() string {
110114
return ComponentName
111115
}
112116

117+
func (k *Kserve) GetUpstreamReleaseStatus() status.UpstreamReleases {
118+
var componentVersion semver.Version
119+
var repositoryURL string
120+
var releaseDetails = make([]status.ComponentReleaseStatus, 0)
121+
var releaseStatus status.UpstreamReleases
122+
123+
env, err := godotenv.Read(filepath.Join(deploy.DefaultManifestPath, ComponentName, ".env"))
124+
125+
if err != nil {
126+
return status.UpstreamReleases{}
127+
}
128+
if env != nil {
129+
componentVersion, err = semver.Parse(env["UPSTREAM_RELEASE_VERSION"])
130+
131+
if err != nil {
132+
return status.UpstreamReleases{}
133+
}
134+
repositoryURL = env["REPOSITORY_URL"]
135+
}
136+
componentReleaseStatus := status.ComponentReleaseStatus{
137+
Name: status.Platform(ComponentName),
138+
DisplayName: ComponentName,
139+
Version: version.OperatorVersion{Version: componentVersion},
140+
RepoURL: repositoryURL}
141+
releaseDetails = append(releaseDetails, componentReleaseStatus)
142+
releaseStatus.UpstreamRelease = releaseDetails
143+
return releaseStatus
144+
}
145+
113146
func (k *Kserve) ReconcileComponent(ctx context.Context, cli client.Client,
114147
owner metav1.Object, dscispec *dsciv1.DSCInitializationSpec, platform cluster.Platform, _ bool) error {
115148
l := logf.FromContext(ctx)

components/kueue/kueue.go

+33
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@ import (
66
"fmt"
77
"path/filepath"
88

9+
"github.com/blang/semver/v4"
10+
"github.com/joho/godotenv"
911
operatorv1 "github.com/openshift/api/operator/v1"
12+
"github.com/operator-framework/api/pkg/lib/version"
1013
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1114
"sigs.k8s.io/controller-runtime/pkg/client"
1215
logf "sigs.k8s.io/controller-runtime/pkg/log"
1316

1417
dsciv1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/dscinitialization/v1"
1518
"github.com/opendatahub-io/opendatahub-operator/v2/components"
19+
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
1620
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
1721
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
1822
)
@@ -67,6 +71,35 @@ func (k *Kueue) GetComponentName() string {
6771
return ComponentName
6872
}
6973

74+
func (k *Kueue) GetUpstreamReleaseStatus() status.UpstreamReleases {
75+
var componentVersion semver.Version
76+
var repositoryURL string
77+
var releaseDetails = make([]status.ComponentReleaseStatus, 0)
78+
var releaseStatus status.UpstreamReleases
79+
80+
env, err := godotenv.Read(filepath.Join(deploy.DefaultManifestPath, ComponentName, ".env"))
81+
82+
if err != nil {
83+
return status.UpstreamReleases{}
84+
}
85+
if env != nil {
86+
componentVersion, err = semver.Parse(env["UPSTREAM_RELEASE_VERSION"])
87+
88+
if err != nil {
89+
return status.UpstreamReleases{}
90+
}
91+
repositoryURL = env["REPOSITORY_URL"]
92+
}
93+
componentReleaseStatus := status.ComponentReleaseStatus{
94+
Name: status.Platform(ComponentName),
95+
DisplayName: ComponentName,
96+
Version: version.OperatorVersion{Version: componentVersion},
97+
RepoURL: repositoryURL}
98+
releaseDetails = append(releaseDetails, componentReleaseStatus)
99+
releaseStatus.UpstreamRelease = releaseDetails
100+
return releaseStatus
101+
}
102+
70103
func (k *Kueue) ReconcileComponent(ctx context.Context, cli client.Client,
71104
owner metav1.Object, dscispec *dsciv1.DSCInitializationSpec, platform cluster.Platform, _ bool) error {
72105
l := logf.FromContext(ctx)

components/modelmeshserving/modelmeshserving.go

+33
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,17 @@ import (
88
"path/filepath"
99
"strings"
1010

11+
"github.com/blang/semver/v4"
12+
"github.com/joho/godotenv"
1113
operatorv1 "github.com/openshift/api/operator/v1"
14+
"github.com/operator-framework/api/pkg/lib/version"
1215
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1316
"sigs.k8s.io/controller-runtime/pkg/client"
1417
logf "sigs.k8s.io/controller-runtime/pkg/log"
1518

1619
dsciv1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/dscinitialization/v1"
1720
"github.com/opendatahub-io/opendatahub-operator/v2/components"
21+
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
1822
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
1923
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
2024
)
@@ -100,6 +104,35 @@ func (m *ModelMeshServing) GetComponentName() string {
100104
return ComponentName
101105
}
102106

107+
func (m *ModelMeshServing) GetUpstreamReleaseStatus() status.UpstreamReleases {
108+
var componentVersion semver.Version
109+
var repositoryURL string
110+
var releaseDetails = make([]status.ComponentReleaseStatus, 0)
111+
var releaseStatus status.UpstreamReleases
112+
113+
env, err := godotenv.Read(filepath.Join(deploy.DefaultManifestPath, ComponentName, ".env"))
114+
115+
if err != nil {
116+
return status.UpstreamReleases{}
117+
}
118+
if env != nil {
119+
componentVersion, err = semver.Parse(env["UPSTREAM_RELEASE_VERSION"])
120+
121+
if err != nil {
122+
return status.UpstreamReleases{}
123+
}
124+
repositoryURL = env["REPOSITORY_URL"]
125+
}
126+
componentReleaseStatus := status.ComponentReleaseStatus{
127+
Name: status.Platform(ComponentName),
128+
DisplayName: ComponentName,
129+
Version: version.OperatorVersion{Version: componentVersion},
130+
RepoURL: repositoryURL}
131+
releaseDetails = append(releaseDetails, componentReleaseStatus)
132+
releaseStatus.UpstreamRelease = releaseDetails
133+
return releaseStatus
134+
}
135+
103136
func (m *ModelMeshServing) ReconcileComponent(ctx context.Context,
104137
cli client.Client,
105138
owner metav1.Object,

0 commit comments

Comments
 (0)