Skip to content

Commit 3a935ab

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

File tree

22 files changed

+468
-59
lines changed

22 files changed

+468
-59
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.ReleaseStatus `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

+31
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,33 @@ func (c *CodeFlare) GetComponentName() string {
7175
return ComponentName
7276
}
7377

78+
func (c *CodeFlare) GetComponentStatus() ([]status.ComponentReleaseStatus, error) {
79+
var componentVersion semver.Version
80+
var repositoryURL string
81+
var upstreamReleases = make([]status.ComponentReleaseStatus, 0)
82+
83+
env, err := godotenv.Read(filepath.Join(deploy.DefaultManifestPath, ComponentName, ".env"))
84+
85+
if err != nil {
86+
return nil, err
87+
}
88+
if env != nil {
89+
componentVersion, err = semver.Parse(env["UPSTREAM_RELEASE_VERSION"])
90+
91+
if err != nil {
92+
return nil, err
93+
}
94+
repositoryURL = env["REPOSITORY_URL"]
95+
}
96+
componentReleaseStatus := status.ComponentReleaseStatus{
97+
Name: status.Platform(ComponentName),
98+
DisplayName: CodeflareOperator,
99+
Version: version.OperatorVersion{Version: componentVersion},
100+
RepoURL: repositoryURL}
101+
upstreamReleases = append(upstreamReleases, componentReleaseStatus)
102+
return upstreamReleases, nil
103+
}
104+
74105
func (c *CodeFlare) ReconcileComponent(ctx context.Context,
75106
cli client.Client,
76107
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+
GetComponentStatus() ([]status.ComponentReleaseStatus, error)
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) GetComponentStatus() ([]status.ComponentReleaseStatus, error) {
87+
return []status.ComponentReleaseStatus{}, nil
88+
}
89+
8590
func (d *Dashboard) ReconcileComponent(ctx context.Context,
8691
cli client.Client,
8792
owner metav1.Object,

components/datasciencepipelines/datasciencepipelines.go

+30
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,33 @@ func (d *DataSciencePipelines) GetComponentName() string {
9295
return ComponentName
9396
}
9497

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

components/kserve/kserve.go

+31
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,33 @@ func (k *Kserve) GetComponentName() string {
110114
return ComponentName
111115
}
112116

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

components/kueue/kueue.go

+31
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,33 @@ func (k *Kueue) GetComponentName() string {
6771
return ComponentName
6872
}
6973

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

components/modelmeshserving/modelmeshserving.go

+31
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,33 @@ func (m *ModelMeshServing) GetComponentName() string {
100104
return ComponentName
101105
}
102106

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

0 commit comments

Comments
 (0)