Skip to content

Commit 4b85fbc

Browse files
committed
feat: Mapping component versions to RHOAI releases
1 parent fa63b4d commit 4b85fbc

22 files changed

+524
-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

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

11+
"github.com/blang/semver/v4"
1112
"github.com/go-logr/logr"
13+
"github.com/joho/godotenv"
1214
operatorv1 "github.com/openshift/api/operator/v1"
1315
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1416
"sigs.k8s.io/controller-runtime/pkg/client"
1517
logf "sigs.k8s.io/controller-runtime/pkg/log"
1618

1719
dsciv1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/dscinitialization/v1"
1820
"github.com/opendatahub-io/opendatahub-operator/v2/components"
21+
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
1922
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
2023
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
2124
)
@@ -72,6 +75,37 @@ func (c *CodeFlare) GetComponentName() string {
7275
return ComponentName
7376
}
7477

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: componentVersion,
102+
RepoURL: repositoryURL}
103+
104+
fmt.Print("release object", componentReleaseStatus)
105+
upstreamReleases = append(upstreamReleases, componentReleaseStatus)
106+
return upstreamReleases, nil
107+
}
108+
75109
func (c *CodeFlare) ReconcileComponent(ctx context.Context,
76110
cli client.Client,
77111
l logr.Logger,

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

+32
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ 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"
1416
corev1 "k8s.io/api/core/v1"
1517
k8serr "k8s.io/apimachinery/pkg/api/errors"
@@ -19,6 +21,7 @@ import (
1921

2022
dsciv1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/dscinitialization/v1"
2123
"github.com/opendatahub-io/opendatahub-operator/v2/components"
24+
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
2225
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
2326
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
2427
)
@@ -82,6 +85,35 @@ func (d *Dashboard) GetComponentName() string {
8285
return ComponentNameUpstream
8386
}
8487

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

components/datasciencepipelines/datasciencepipelines.go

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

11+
"github.com/blang/semver/v4"
1112
"github.com/go-logr/logr"
13+
"github.com/joho/godotenv"
1214
operatorv1 "github.com/openshift/api/operator/v1"
1315
conditionsv1 "github.com/openshift/custom-resource-status/conditions/v1"
1416
corev1 "k8s.io/api/core/v1"
@@ -93,6 +95,37 @@ func (d *DataSciencePipelines) GetComponentName() string {
9395
return ComponentName
9496
}
9597

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: componentVersion,
122+
RepoURL: repositoryURL}
123+
124+
fmt.Print("release object", componentReleaseStatus)
125+
upstreamReleases = append(upstreamReleases, componentReleaseStatus)
126+
return upstreamReleases, nil
127+
}
128+
96129
func (d *DataSciencePipelines) ReconcileComponent(ctx context.Context,
97130
cli client.Client,
98131
l logr.Logger,

components/kserve/kserve.go

+34
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import (
88
"path/filepath"
99
"strings"
1010

11+
"github.com/blang/semver/v4"
1112
"github.com/go-logr/logr"
13+
"github.com/joho/godotenv"
1214
operatorv1 "github.com/openshift/api/operator/v1"
1315
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1416
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -17,6 +19,7 @@ import (
1719
dsciv1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/dscinitialization/v1"
1820
infrav1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/infrastructure/v1"
1921
"github.com/opendatahub-io/opendatahub-operator/v2/components"
22+
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
2023
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
2124
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
2225
)
@@ -111,6 +114,37 @@ func (k *Kserve) GetComponentName() string {
111114
return ComponentName
112115
}
113116

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: componentVersion,
141+
RepoURL: repositoryURL}
142+
143+
fmt.Print("release object", componentReleaseStatus)
144+
upstreamReleases = append(upstreamReleases, componentReleaseStatus)
145+
return upstreamReleases, nil
146+
}
147+
114148
func (k *Kserve) ReconcileComponent(ctx context.Context, cli client.Client,
115149
l logr.Logger, owner metav1.Object, dscispec *dsciv1.DSCInitializationSpec, platform cluster.Platform, _ bool) error {
116150
enabled := k.GetManagementState() == operatorv1.Managed

components/kueue/kueue.go

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

9+
"github.com/blang/semver/v4"
910
"github.com/go-logr/logr"
11+
"github.com/joho/godotenv"
1012
operatorv1 "github.com/openshift/api/operator/v1"
1113
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1214
"sigs.k8s.io/controller-runtime/pkg/client"
1315
logf "sigs.k8s.io/controller-runtime/pkg/log"
1416

1517
dsciv1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/dscinitialization/v1"
1618
"github.com/opendatahub-io/opendatahub-operator/v2/components"
19+
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
1720
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
1821
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
1922
)
@@ -68,6 +71,37 @@ func (k *Kueue) GetComponentName() string {
6871
return ComponentName
6972
}
7073

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: componentVersion,
98+
RepoURL: repositoryURL}
99+
100+
fmt.Print("release object", componentReleaseStatus)
101+
upstreamReleases = append(upstreamReleases, componentReleaseStatus)
102+
return upstreamReleases, nil
103+
}
104+
71105
func (k *Kueue) ReconcileComponent(ctx context.Context, cli client.Client, l logr.Logger,
72106
owner metav1.Object, dscispec *dsciv1.DSCInitializationSpec, platform cluster.Platform, _ bool) error {
73107
enabled := k.GetManagementState() == operatorv1.Managed

0 commit comments

Comments
 (0)