Skip to content

Commit 35692d9

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

File tree

21 files changed

+527
-42
lines changed

21 files changed

+527
-42
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

+35
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,37 @@ 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+
fmt.Print("godotenv", err)
87+
return nil, err
88+
}
89+
if env != nil {
90+
componentVersion, err = semver.Parse(env["UPSTREAM_RELEASE_VERSION"])
91+
92+
if err != nil {
93+
fmt.Print("getEnv error", err)
94+
return nil, err
95+
}
96+
repositoryURL = env["REPOSITORY_URL"]
97+
}
98+
componentReleaseStatus := status.ComponentReleaseStatus{
99+
Name: status.Platform(ComponentName),
100+
DisplayName: CodeflareOperator,
101+
Version: version.OperatorVersion{Version: componentVersion},
102+
RepoURL: repositoryURL}
103+
104+
fmt.Print("release object", componentReleaseStatus)
105+
upstreamReleases = append(upstreamReleases, componentReleaseStatus)
106+
return upstreamReleases, nil
107+
}
108+
74109
func (c *CodeFlare) ReconcileComponent(ctx context.Context,
75110
cli client.Client,
76111
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

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

12+
"github.com/blang/semver/v4"
1213
"github.com/go-logr/logr"
14+
"github.com/joho/godotenv"
1315
operatorv1 "github.com/openshift/api/operator/v1"
16+
"github.com/operator-framework/api/pkg/lib/version"
1417
corev1 "k8s.io/api/core/v1"
1518
k8serr "k8s.io/apimachinery/pkg/api/errors"
1619
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -19,6 +22,7 @@ import (
1922

2023
dsciv1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/dscinitialization/v1"
2124
"github.com/opendatahub-io/opendatahub-operator/v2/components"
25+
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
2226
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
2327
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
2428
)
@@ -82,6 +86,35 @@ func (d *Dashboard) GetComponentName() string {
8286
return ComponentNameUpstream
8387
}
8488

89+
func (d *Dashboard) GetComponentStatus() ([]status.ComponentReleaseStatus, error) {
90+
var componentVersion semver.Version
91+
var upstreamReleases = make([]status.ComponentReleaseStatus, 0)
92+
fmt.Print("manifest path", d.DevFlags.Manifests)
93+
env, err := godotenv.Read(filepath.Join(deploy.DefaultManifestPath, ComponentNameUpstream, ".env"))
94+
95+
if err != nil {
96+
fmt.Print("godotenv", err)
97+
return nil, err
98+
}
99+
if env != nil {
100+
componentVersion, err = semver.Parse(env["INTERNAL_RELEASE_VERSION"])
101+
102+
if err != nil {
103+
fmt.Print("getEnv error", err)
104+
return nil, err
105+
}
106+
}
107+
releaseStatus := status.ComponentReleaseStatus{
108+
Name: status.Platform(ComponentNameUpstream),
109+
DisplayName: ComponentNameDownstream,
110+
Version: version.OperatorVersion{Version: componentVersion},
111+
RepoURL: d.DevFlags.Manifests[0].URI}
112+
fmt.Print("release object", releaseStatus)
113+
// returnDetails.UpstreamReleases = upstreamReleases
114+
upstreamReleases = append(upstreamReleases, releaseStatus)
115+
return upstreamReleases, nil
116+
}
117+
85118
func (d *Dashboard) ReconcileComponent(ctx context.Context,
86119
cli client.Client,
87120
owner metav1.Object,

components/datasciencepipelines/datasciencepipelines.go

+34
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,37 @@ 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+
fmt.Print("godotenv", err)
107+
return nil, err
108+
}
109+
if env != nil {
110+
componentVersion, err = semver.Parse(env["UPSTREAM_RELEASE_VERSION"])
111+
112+
if err != nil {
113+
fmt.Print("getEnv error", err)
114+
return nil, err
115+
}
116+
repositoryURL = env["REPOSITORY_URL"]
117+
}
118+
componentReleaseStatus := status.ComponentReleaseStatus{
119+
Name: status.Platform(ComponentName),
120+
DisplayName: ComponentName,
121+
Version: version.OperatorVersion{Version: componentVersion},
122+
RepoURL: repositoryURL}
123+
124+
fmt.Print("release object", componentReleaseStatus)
125+
upstreamReleases = append(upstreamReleases, componentReleaseStatus)
126+
return upstreamReleases, nil
127+
}
128+
95129
func (d *DataSciencePipelines) ReconcileComponent(ctx context.Context,
96130
cli client.Client,
97131
owner metav1.Object,

components/kserve/kserve.go

+35
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,37 @@ 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+
fmt.Print("godotenv", err)
126+
return nil, err
127+
}
128+
if env != nil {
129+
componentVersion, err = semver.Parse(env["UPSTREAM_RELEASE_VERSION"])
130+
131+
if err != nil {
132+
fmt.Print("getEnv error", err)
133+
return nil, err
134+
}
135+
repositoryURL = env["REPOSITORY_URL"]
136+
}
137+
componentReleaseStatus := status.ComponentReleaseStatus{
138+
Name: status.Platform(ComponentName),
139+
DisplayName: ComponentName,
140+
Version: version.OperatorVersion{Version: componentVersion},
141+
RepoURL: repositoryURL}
142+
143+
fmt.Print("release object", componentReleaseStatus)
144+
upstreamReleases = append(upstreamReleases, componentReleaseStatus)
145+
return upstreamReleases, nil
146+
}
147+
113148
func (k *Kserve) ReconcileComponent(ctx context.Context, cli client.Client,
114149
owner metav1.Object, dscispec *dsciv1.DSCInitializationSpec, platform cluster.Platform, _ bool) error {
115150
l := logf.FromContext(ctx)

components/kueue/kueue.go

+35
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,37 @@ 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+
fmt.Print("godotenv", err)
83+
return nil, err
84+
}
85+
if env != nil {
86+
componentVersion, err = semver.Parse(env["UPSTREAM_RELEASE_VERSION"])
87+
88+
if err != nil {
89+
fmt.Print("getEnv error", err)
90+
return nil, err
91+
}
92+
repositoryURL = env["REPOSITORY_URL"]
93+
}
94+
componentReleaseStatus := status.ComponentReleaseStatus{
95+
Name: status.Platform(ComponentName),
96+
DisplayName: ComponentName,
97+
Version: version.OperatorVersion{Version: componentVersion},
98+
RepoURL: repositoryURL}
99+
100+
fmt.Print("release object", componentReleaseStatus)
101+
upstreamReleases = append(upstreamReleases, componentReleaseStatus)
102+
return upstreamReleases, nil
103+
}
104+
70105
func (k *Kueue) ReconcileComponent(ctx context.Context, cli client.Client,
71106
owner metav1.Object, dscispec *dsciv1.DSCInitializationSpec, platform cluster.Platform, _ bool) error {
72107
l := logf.FromContext(ctx)

0 commit comments

Comments
 (0)