diff --git a/apis/components/v1alpha1/codeflare_types.go b/apis/components/v1alpha1/codeflare_types.go
index 9152db29fd0..da89a34f25f 100644
--- a/apis/components/v1alpha1/codeflare_types.go
+++ b/apis/components/v1alpha1/codeflare_types.go
@@ -18,6 +18,7 @@ package v1alpha1
import (
"github.com/opendatahub-io/opendatahub-operator/v2/apis/common"
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -36,6 +37,7 @@ type CodeFlareCommonStatus struct {
type CodeFlareStatus struct {
common.Status `json:",inline"`
CodeFlareCommonStatus `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
// +kubebuilder:object:root=true
@@ -96,4 +98,5 @@ type DSCCodeFlare struct {
type DSCCodeFlareStatus struct {
common.ManagementSpec `json:",inline"`
*CodeFlareCommonStatus `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
diff --git a/apis/components/v1alpha1/dashboard_types.go b/apis/components/v1alpha1/dashboard_types.go
index 14afd14337b..69be47bc3c3 100644
--- a/apis/components/v1alpha1/dashboard_types.go
+++ b/apis/components/v1alpha1/dashboard_types.go
@@ -18,6 +18,7 @@ package v1alpha1
import (
"github.com/opendatahub-io/opendatahub-operator/v2/apis/common"
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -104,4 +105,5 @@ type DSCDashboard struct {
type DSCDashboardStatus struct {
common.ManagementSpec `json:",inline"`
*DashboardCommonStatus `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
diff --git a/apis/components/v1alpha1/datasciencepipelines_types.go b/apis/components/v1alpha1/datasciencepipelines_types.go
index da10f02cc8c..ae7c42f80d9 100644
--- a/apis/components/v1alpha1/datasciencepipelines_types.go
+++ b/apis/components/v1alpha1/datasciencepipelines_types.go
@@ -18,6 +18,7 @@ package v1alpha1
import (
"github.com/opendatahub-io/opendatahub-operator/v2/apis/common"
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -96,4 +97,5 @@ type DSCDataSciencePipelines struct {
type DSCDataSciencePipelinesStatus struct {
common.ManagementSpec `json:",inline"`
*DataSciencePipelinesCommonStatus `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
diff --git a/apis/components/v1alpha1/kserve_types.go b/apis/components/v1alpha1/kserve_types.go
index b69d88aed83..da051c177a3 100644
--- a/apis/components/v1alpha1/kserve_types.go
+++ b/apis/components/v1alpha1/kserve_types.go
@@ -22,6 +22,7 @@ import (
"github.com/opendatahub-io/opendatahub-operator/v2/apis/common"
infrav1 "github.com/opendatahub-io/opendatahub-operator/v2/apis/infrastructure/v1"
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
)
const (
@@ -134,4 +135,5 @@ type DSCKserve struct {
type DSCKserveStatus struct {
common.ManagementSpec `json:",inline"`
*KserveCommonStatus `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
diff --git a/apis/components/v1alpha1/kueue_types.go b/apis/components/v1alpha1/kueue_types.go
index e0be9ff57ac..81bd2a54ba4 100644
--- a/apis/components/v1alpha1/kueue_types.go
+++ b/apis/components/v1alpha1/kueue_types.go
@@ -18,6 +18,7 @@ package v1alpha1
import (
"github.com/opendatahub-io/opendatahub-operator/v2/apis/common"
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -95,4 +96,5 @@ type DSCKueue struct {
type DSCKueueStatus struct {
common.ManagementSpec `json:",inline"`
*KueueCommonStatus `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
diff --git a/apis/components/v1alpha1/modelcontroller_types.go b/apis/components/v1alpha1/modelcontroller_types.go
index 9de70bb81ae..884cb5923dd 100644
--- a/apis/components/v1alpha1/modelcontroller_types.go
+++ b/apis/components/v1alpha1/modelcontroller_types.go
@@ -18,6 +18,7 @@ package v1alpha1
import (
"github.com/opendatahub-io/opendatahub-operator/v2/apis/common"
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
operatorv1 "github.com/openshift/api/operator/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -80,6 +81,7 @@ func (s *ModelControllerMMSpec) GetDevFlags() *common.DevFlags {
// ModelControllerStatus defines the observed state of ModelController
type ModelControllerStatus struct {
common.Status `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
// +kubebuilder:object:root=true
diff --git a/apis/components/v1alpha1/modelmeshserving_types.go b/apis/components/v1alpha1/modelmeshserving_types.go
index e28649a417c..00ac03c1ff5 100644
--- a/apis/components/v1alpha1/modelmeshserving_types.go
+++ b/apis/components/v1alpha1/modelmeshserving_types.go
@@ -18,6 +18,7 @@ package v1alpha1
import (
"github.com/opendatahub-io/opendatahub-operator/v2/apis/common"
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -95,4 +96,5 @@ type DSCModelMeshServing struct {
type DSCModelMeshServingStatus struct {
common.ManagementSpec `json:",inline"`
*ModelMeshServingCommonStatus `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
diff --git a/apis/components/v1alpha1/modelregistry_types.go b/apis/components/v1alpha1/modelregistry_types.go
index 0d653b7d355..379024950ef 100644
--- a/apis/components/v1alpha1/modelregistry_types.go
+++ b/apis/components/v1alpha1/modelregistry_types.go
@@ -18,6 +18,7 @@ package v1alpha1
import (
"github.com/opendatahub-io/opendatahub-operator/v2/apis/common"
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -112,4 +113,5 @@ type DSCModelRegistry struct {
type DSCModelRegistryStatus struct {
common.ManagementSpec `json:",inline"`
*ModelRegistryCommonStatus `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
diff --git a/apis/components/v1alpha1/ray_types.go b/apis/components/v1alpha1/ray_types.go
index a51c29e3cd4..3e044620956 100644
--- a/apis/components/v1alpha1/ray_types.go
+++ b/apis/components/v1alpha1/ray_types.go
@@ -18,6 +18,7 @@ package v1alpha1
import (
"github.com/opendatahub-io/opendatahub-operator/v2/apis/common"
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -95,4 +96,5 @@ type DSCRay struct {
type DSCRayStatus struct {
common.ManagementSpec `json:",inline"`
*RayCommonStatus `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
diff --git a/apis/components/v1alpha1/trainingoperator_types.go b/apis/components/v1alpha1/trainingoperator_types.go
index 2d76ca78e6e..4ef8c00d1d4 100644
--- a/apis/components/v1alpha1/trainingoperator_types.go
+++ b/apis/components/v1alpha1/trainingoperator_types.go
@@ -18,6 +18,7 @@ package v1alpha1
import (
"github.com/opendatahub-io/opendatahub-operator/v2/apis/common"
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -95,4 +96,5 @@ type DSCTrainingOperator struct {
type DSCTrainingOperatorStatus struct {
common.ManagementSpec `json:",inline"`
*TrainingOperatorCommonStatus `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
diff --git a/apis/components/v1alpha1/trustyai_types.go b/apis/components/v1alpha1/trustyai_types.go
index 9ac2652fcc1..f64134f9f29 100644
--- a/apis/components/v1alpha1/trustyai_types.go
+++ b/apis/components/v1alpha1/trustyai_types.go
@@ -18,6 +18,7 @@ package v1alpha1
import (
"github.com/opendatahub-io/opendatahub-operator/v2/apis/common"
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -95,4 +96,5 @@ type DSCTrustyAI struct {
type DSCTrustyAIStatus struct {
common.ManagementSpec `json:",inline"`
*TrustyAICommonStatus `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
diff --git a/apis/components/v1alpha1/workbenches_types.go b/apis/components/v1alpha1/workbenches_types.go
index 4ea01ce7bbc..cb2f82227a0 100644
--- a/apis/components/v1alpha1/workbenches_types.go
+++ b/apis/components/v1alpha1/workbenches_types.go
@@ -18,6 +18,7 @@ package v1alpha1
import (
"github.com/opendatahub-io/opendatahub-operator/v2/apis/common"
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -101,4 +102,5 @@ type DSCWorkbenches struct {
type DSCWorkbenchesStatus struct {
common.ManagementSpec `json:",inline"`
*WorkbenchesCommonStatus `json:",inline"`
+ Releases []status.ComponentReleaseStatus `json:"releases,omitempty"`
}
diff --git a/apis/components/v1alpha1/zz_generated.deepcopy.go b/apis/components/v1alpha1/zz_generated.deepcopy.go
index 9de0b610abc..80b3b88138a 100644
--- a/apis/components/v1alpha1/zz_generated.deepcopy.go
+++ b/apis/components/v1alpha1/zz_generated.deepcopy.go
@@ -21,6 +21,7 @@ limitations under the License.
package v1alpha1
import (
+ "github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
runtime "k8s.io/apimachinery/pkg/runtime"
)
@@ -135,6 +136,13 @@ func (in *CodeFlareStatus) DeepCopyInto(out *CodeFlareStatus) {
*out = *in
in.Status.DeepCopyInto(&out.Status)
out.CodeFlareCommonStatus = in.CodeFlareCommonStatus
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CodeFlareStatus.
@@ -173,6 +181,13 @@ func (in *DSCCodeFlareStatus) DeepCopyInto(out *DSCCodeFlareStatus) {
*out = new(CodeFlareCommonStatus)
**out = **in
}
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DSCCodeFlareStatus.
@@ -211,6 +226,13 @@ func (in *DSCDashboardStatus) DeepCopyInto(out *DSCDashboardStatus) {
*out = new(DashboardCommonStatus)
**out = **in
}
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DSCDashboardStatus.
@@ -249,6 +271,13 @@ func (in *DSCDataSciencePipelinesStatus) DeepCopyInto(out *DSCDataSciencePipelin
*out = new(DataSciencePipelinesCommonStatus)
**out = **in
}
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DSCDataSciencePipelinesStatus.
@@ -287,6 +316,13 @@ func (in *DSCKserveStatus) DeepCopyInto(out *DSCKserveStatus) {
*out = new(KserveCommonStatus)
**out = **in
}
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DSCKserveStatus.
@@ -325,6 +361,13 @@ func (in *DSCKueueStatus) DeepCopyInto(out *DSCKueueStatus) {
*out = new(KueueCommonStatus)
**out = **in
}
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DSCKueueStatus.
@@ -363,6 +406,13 @@ func (in *DSCModelMeshServingStatus) DeepCopyInto(out *DSCModelMeshServingStatus
*out = new(ModelMeshServingCommonStatus)
**out = **in
}
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DSCModelMeshServingStatus.
@@ -401,6 +451,13 @@ func (in *DSCModelRegistryStatus) DeepCopyInto(out *DSCModelRegistryStatus) {
*out = new(ModelRegistryCommonStatus)
**out = **in
}
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DSCModelRegistryStatus.
@@ -439,6 +496,13 @@ func (in *DSCRayStatus) DeepCopyInto(out *DSCRayStatus) {
*out = new(RayCommonStatus)
**out = **in
}
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DSCRayStatus.
@@ -477,6 +541,13 @@ func (in *DSCTrainingOperatorStatus) DeepCopyInto(out *DSCTrainingOperatorStatus
*out = new(TrainingOperatorCommonStatus)
**out = **in
}
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DSCTrainingOperatorStatus.
@@ -515,6 +586,13 @@ func (in *DSCTrustyAIStatus) DeepCopyInto(out *DSCTrustyAIStatus) {
*out = new(TrustyAICommonStatus)
**out = **in
}
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DSCTrustyAIStatus.
@@ -553,6 +631,13 @@ func (in *DSCWorkbenchesStatus) DeepCopyInto(out *DSCWorkbenchesStatus) {
*out = new(WorkbenchesCommonStatus)
**out = **in
}
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DSCWorkbenchesStatus.
@@ -1180,6 +1265,13 @@ func (in *ModelControllerSpec) DeepCopy() *ModelControllerSpec {
func (in *ModelControllerStatus) DeepCopyInto(out *ModelControllerStatus) {
*out = *in
in.Status.DeepCopyInto(&out.Status)
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]status.ComponentReleaseStatus, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModelControllerStatus.
diff --git a/config/crd/bases/components.platform.opendatahub.io_codeflares.yaml b/config/crd/bases/components.platform.opendatahub.io_codeflares.yaml
index 999e5ccfdd4..73438190d72 100644
--- a/config/crd/bases/components.platform.opendatahub.io_codeflares.yaml
+++ b/config/crd/bases/components.platform.opendatahub.io_codeflares.yaml
@@ -141,6 +141,17 @@ spec:
type: integer
phase:
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
type: object
type: object
x-kubernetes-validations:
diff --git a/config/crd/bases/components.platform.opendatahub.io_modelcontrollers.yaml b/config/crd/bases/components.platform.opendatahub.io_modelcontrollers.yaml
index 500450f1e68..00ff16ce099 100644
--- a/config/crd/bases/components.platform.opendatahub.io_modelcontrollers.yaml
+++ b/config/crd/bases/components.platform.opendatahub.io_modelcontrollers.yaml
@@ -203,6 +203,17 @@ spec:
type: integer
phase:
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
type: object
type: object
x-kubernetes-validations:
diff --git a/config/crd/bases/datasciencecluster.opendatahub.io_datascienceclusters.yaml b/config/crd/bases/datasciencecluster.opendatahub.io_datascienceclusters.yaml
index 6a1c89dea45..23941232d89 100644
--- a/config/crd/bases/datasciencecluster.opendatahub.io_datascienceclusters.yaml
+++ b/config/crd/bases/datasciencecluster.opendatahub.io_datascienceclusters.yaml
@@ -676,6 +676,17 @@ spec:
- Removed
pattern: ^(Managed|Unmanaged|Force|Removed)$
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
type: object
dashboard:
description: Dashboard component status.
@@ -694,6 +705,17 @@ spec:
- Removed
pattern: ^(Managed|Unmanaged|Force|Removed)$
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
url:
type: string
type: object
@@ -714,6 +736,17 @@ spec:
- Removed
pattern: ^(Managed|Unmanaged|Force|Removed)$
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
type: object
kserve:
description: Kserve component status.
@@ -737,6 +770,17 @@ spec:
- Removed
pattern: ^(Managed|Unmanaged|Force|Removed)$
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
type: object
kueue:
description: Kueue component status.
@@ -755,6 +799,17 @@ spec:
- Removed
pattern: ^(Managed|Unmanaged|Force|Removed)$
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
type: object
modelmeshserving:
description: ModelMeshServing component status.
@@ -773,6 +828,17 @@ spec:
- Removed
pattern: ^(Managed|Unmanaged|Force|Removed)$
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
type: object
modelregistry:
description: ModelRegistry component status.
@@ -793,6 +859,17 @@ spec:
type: string
registriesNamespace:
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
type: object
ray:
description: Ray component status.
@@ -811,6 +888,17 @@ spec:
- Removed
pattern: ^(Managed|Unmanaged|Force|Removed)$
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
type: object
trainingoperator:
description: Training Operator component status.
@@ -829,6 +917,17 @@ spec:
- Removed
pattern: ^(Managed|Unmanaged|Force|Removed)$
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
type: object
trustyai:
description: TrustyAI component status.
@@ -847,6 +946,17 @@ spec:
- Removed
pattern: ^(Managed|Unmanaged|Force|Removed)$
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
type: object
workbenches:
description: Workbenches component status.
@@ -865,6 +975,17 @@ spec:
- Removed
pattern: ^(Managed|Unmanaged|Force|Removed)$
type: string
+ releases:
+ items:
+ properties:
+ name:
+ type: string
+ repoURL:
+ type: string
+ version:
+ type: string
+ type: object
+ type: array
type: object
type: object
conditions:
diff --git a/controllers/components/codeflare/codeflare.go b/controllers/components/codeflare/codeflare.go
index 0920a8b45b1..697aa0318b2 100644
--- a/controllers/components/codeflare/codeflare.go
+++ b/controllers/components/codeflare/codeflare.go
@@ -73,6 +73,13 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
dsc.Status.InstalledComponents[LegacyComponentName] = false
dsc.Status.Components.CodeFlare.ManagementSpec.ManagementState = s.GetManagementState(dsc)
dsc.Status.Components.CodeFlare.CodeFlareCommonStatus = nil
+ dsc.Status.Components.CodeFlare.Releases = nil
+
+ releases, err := status.GetReleaseStatus(odhdeploy.DefaultManifestPath, ComponentName)
+
+ if err != nil {
+ return err
+ }
nc := conditionsv1.Condition{
Type: ReadyConditionType,
@@ -85,6 +92,7 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
case operatorv1.Managed:
dsc.Status.InstalledComponents[LegacyComponentName] = true
dsc.Status.Components.CodeFlare.CodeFlareCommonStatus = c.Status.CodeFlareCommonStatus.DeepCopy()
+ dsc.Status.Components.CodeFlare.Releases = releases
if rc := meta.FindStatusCondition(c.Status.Conditions, status.ConditionTypeReady); rc != nil {
nc.Status = corev1.ConditionStatus(rc.Status)
diff --git a/controllers/components/dashboard/dashboard.go b/controllers/components/dashboard/dashboard.go
index 7070c87d489..ea4f05f0d6f 100644
--- a/controllers/components/dashboard/dashboard.go
+++ b/controllers/components/dashboard/dashboard.go
@@ -75,6 +75,13 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
dsc.Status.InstalledComponents[LegacyComponentNameUpstream] = false
dsc.Status.Components.Dashboard.ManagementSpec.ManagementState = s.GetManagementState(dsc)
dsc.Status.Components.Dashboard.DashboardCommonStatus = nil
+ dsc.Status.Components.Dashboard.Releases = nil
+
+ releases, err := status.GetReleaseStatus(odhdeploy.DefaultManifestPath, ComponentName)
+
+ if err != nil {
+ return err
+ }
nc := conditionsv1.Condition{
Type: ReadyConditionType,
@@ -87,6 +94,7 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
case operatorv1.Managed:
dsc.Status.InstalledComponents[LegacyComponentNameUpstream] = true
dsc.Status.Components.Dashboard.DashboardCommonStatus = c.Status.DashboardCommonStatus.DeepCopy()
+ dsc.Status.Components.Dashboard.Releases = releases
if rc := meta.FindStatusCondition(c.Status.Conditions, status.ConditionTypeReady); rc != nil {
nc.Status = corev1.ConditionStatus(rc.Status)
diff --git a/controllers/components/datasciencepipelines/datasciencepipelines.go b/controllers/components/datasciencepipelines/datasciencepipelines.go
index 7ee17348a28..ba664d6294c 100644
--- a/controllers/components/datasciencepipelines/datasciencepipelines.go
+++ b/controllers/components/datasciencepipelines/datasciencepipelines.go
@@ -17,7 +17,7 @@ import (
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
cr "github.com/opendatahub-io/opendatahub-operator/v2/pkg/componentsregistry"
- "github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
+ odhdeploy "github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/metadata/annotations"
)
@@ -39,7 +39,7 @@ func (s *componentHandler) GetManagementState(dsc *dscv1.DataScienceCluster) ope
}
func (s *componentHandler) Init(_ cluster.Platform) error {
- if err := deploy.ApplyParams(paramsPath().String(), imageParamMap); err != nil {
+ if err := odhdeploy.ApplyParams(paramsPath().String(), imageParamMap); err != nil {
return fmt.Errorf("failed to update images on path %s: %w", paramsPath(), err)
}
@@ -73,6 +73,7 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
dsc.Status.InstalledComponents[LegacyComponentName] = false
dsc.Status.Components.DataSciencePipelines.ManagementSpec.ManagementState = s.GetManagementState(dsc)
dsc.Status.Components.DataSciencePipelines.DataSciencePipelinesCommonStatus = nil
+ dsc.Status.Components.DataSciencePipelines.Releases = nil
nc := conditionsv1.Condition{
Type: ReadyConditionType,
@@ -81,10 +82,17 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
Message: "Not Available",
}
+ releases, err := status.GetReleaseStatus(odhdeploy.DefaultManifestPath, ComponentName)
+
+ if err != nil {
+ return err
+ }
+
switch s.GetManagementState(dsc) {
case operatorv1.Managed:
dsc.Status.InstalledComponents[LegacyComponentName] = true
dsc.Status.Components.DataSciencePipelines.DataSciencePipelinesCommonStatus = c.Status.DataSciencePipelinesCommonStatus.DeepCopy()
+ dsc.Status.Components.DataSciencePipelines.Releases = releases
if rc := meta.FindStatusCondition(c.Status.Conditions, status.ConditionTypeReady); rc != nil {
nc.Status = corev1.ConditionStatus(rc.Status)
diff --git a/controllers/components/kserve/kserve.go b/controllers/components/kserve/kserve.go
index 8c1ddb51bc8..dbbccf7860d 100644
--- a/controllers/components/kserve/kserve.go
+++ b/controllers/components/kserve/kserve.go
@@ -17,6 +17,7 @@ import (
"github.com/opendatahub-io/opendatahub-operator/v2/controllers/status"
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/cluster"
cr "github.com/opendatahub-io/opendatahub-operator/v2/pkg/componentsregistry"
+ odhdeploy "github.com/opendatahub-io/opendatahub-operator/v2/pkg/deploy"
"github.com/opendatahub-io/opendatahub-operator/v2/pkg/metadata/annotations"
)
@@ -85,6 +86,13 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
dsc.Status.InstalledComponents[LegacyComponentName] = false
dsc.Status.Components.Kserve.ManagementSpec.ManagementState = s.GetManagementState(dsc)
dsc.Status.Components.Kserve.KserveCommonStatus = nil
+ dsc.Status.Components.Kserve.Releases = nil
+
+ releases, err := status.GetReleaseStatus(odhdeploy.DefaultManifestPath, componentName)
+
+ if err != nil {
+ return err
+ }
nc := conditionsv1.Condition{
Type: ReadyConditionType,
@@ -97,6 +105,7 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
case operatorv1.Managed:
dsc.Status.InstalledComponents[LegacyComponentName] = true
dsc.Status.Components.Kserve.KserveCommonStatus = c.Status.KserveCommonStatus.DeepCopy()
+ dsc.Status.Components.Kserve.Releases = releases
if rc := meta.FindStatusCondition(c.Status.Conditions, status.ConditionTypeReady); rc != nil {
nc.Status = corev1.ConditionStatus(rc.Status)
diff --git a/controllers/components/kueue/kueue.go b/controllers/components/kueue/kueue.go
index 23287e9898f..695c269c596 100644
--- a/controllers/components/kueue/kueue.go
+++ b/controllers/components/kueue/kueue.go
@@ -73,6 +73,13 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
dsc.Status.InstalledComponents[LegacyComponentName] = false
dsc.Status.Components.Kueue.ManagementSpec.ManagementState = s.GetManagementState(dsc)
dsc.Status.Components.Kueue.KueueCommonStatus = nil
+ dsc.Status.Components.Kueue.Releases = nil
+
+ releases, err := status.GetReleaseStatus(odhdeploy.DefaultManifestPath, ComponentName)
+
+ if err != nil {
+ return err
+ }
nc := conditionsv1.Condition{
Type: ReadyConditionType,
@@ -85,6 +92,7 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
case operatorv1.Managed:
dsc.Status.InstalledComponents[LegacyComponentName] = true
dsc.Status.Components.Kueue.KueueCommonStatus = c.Status.KueueCommonStatus.DeepCopy()
+ dsc.Status.Components.Kueue.Releases = releases
if rc := meta.FindStatusCondition(c.Status.Conditions, status.ConditionTypeReady); rc != nil {
nc.Status = corev1.ConditionStatus(rc.Status)
diff --git a/controllers/components/modelmeshserving/modelmeshserving.go b/controllers/components/modelmeshserving/modelmeshserving.go
index 22bbb6aceea..2f5cdf0d39e 100644
--- a/controllers/components/modelmeshserving/modelmeshserving.go
+++ b/controllers/components/modelmeshserving/modelmeshserving.go
@@ -75,6 +75,13 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
dsc.Status.InstalledComponents[LegacyComponentName] = false
dsc.Status.Components.ModelMeshServing.ManagementSpec.ManagementState = s.GetManagementState(dsc)
dsc.Status.Components.ModelMeshServing.ModelMeshServingCommonStatus = nil
+ dsc.Status.Components.ModelMeshServing.Releases = nil
+
+ releases, err := status.GetReleaseStatus(odhdeploy.DefaultManifestPath, ComponentName)
+
+ if err != nil {
+ return err
+ }
nc := conditionsv1.Condition{
Type: ReadyConditionType,
@@ -87,6 +94,7 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
case operatorv1.Managed:
dsc.Status.InstalledComponents[LegacyComponentName] = true
dsc.Status.Components.ModelMeshServing.ModelMeshServingCommonStatus = c.Status.ModelMeshServingCommonStatus.DeepCopy()
+ dsc.Status.Components.ModelMeshServing.Releases = releases
if rc := meta.FindStatusCondition(c.Status.Conditions, status.ConditionTypeReady); rc != nil {
nc.Status = corev1.ConditionStatus(rc.Status)
diff --git a/controllers/components/modelregistry/modelregistry.go b/controllers/components/modelregistry/modelregistry.go
index 31b13a1ed2c..56529224a6d 100644
--- a/controllers/components/modelregistry/modelregistry.go
+++ b/controllers/components/modelregistry/modelregistry.go
@@ -75,6 +75,13 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
dsc.Status.InstalledComponents[LegacyComponentName] = false
dsc.Status.Components.ModelRegistry.ManagementSpec.ManagementState = s.GetManagementState(dsc)
dsc.Status.Components.ModelRegistry.ModelRegistryCommonStatus = nil
+ dsc.Status.Components.ModelRegistry.Releases = nil
+
+ releases, err := status.GetReleaseStatus(odhdeploy.DefaultManifestPath, ComponentName)
+
+ if err != nil {
+ return err
+ }
nc := conditionsv1.Condition{
Type: ReadyConditionType,
@@ -87,6 +94,7 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
case operatorv1.Managed:
dsc.Status.InstalledComponents[LegacyComponentName] = true
dsc.Status.Components.ModelRegistry.ModelRegistryCommonStatus = c.Status.ModelRegistryCommonStatus.DeepCopy()
+ dsc.Status.Components.ModelRegistry.Releases = releases
if rc := meta.FindStatusCondition(c.Status.Conditions, status.ConditionTypeReady); rc != nil {
nc.Status = corev1.ConditionStatus(rc.Status)
diff --git a/controllers/components/ray/ray.go b/controllers/components/ray/ray.go
index 551961a84ab..bb112a74616 100644
--- a/controllers/components/ray/ray.go
+++ b/controllers/components/ray/ray.go
@@ -73,6 +73,13 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
dsc.Status.InstalledComponents[LegacyComponentName] = false
dsc.Status.Components.Ray.ManagementSpec.ManagementState = s.GetManagementState(dsc)
dsc.Status.Components.Ray.RayCommonStatus = nil
+ dsc.Status.Components.Ray.Releases = nil
+
+ releases, err := status.GetReleaseStatus(odhdeploy.DefaultManifestPath, ComponentName)
+
+ if err != nil {
+ return err
+ }
nc := conditionsv1.Condition{
Type: ReadyConditionType,
@@ -85,6 +92,7 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
case operatorv1.Managed:
dsc.Status.InstalledComponents[LegacyComponentName] = true
dsc.Status.Components.Ray.RayCommonStatus = c.Status.RayCommonStatus.DeepCopy()
+ dsc.Status.Components.Ray.Releases = releases
if rc := meta.FindStatusCondition(c.Status.Conditions, status.ConditionTypeReady); rc != nil {
nc.Status = corev1.ConditionStatus(rc.Status)
diff --git a/controllers/components/trainingoperator/trainingoperator.go b/controllers/components/trainingoperator/trainingoperator.go
index 316d686b0c2..05583e5ab8e 100644
--- a/controllers/components/trainingoperator/trainingoperator.go
+++ b/controllers/components/trainingoperator/trainingoperator.go
@@ -72,6 +72,13 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
dsc.Status.InstalledComponents[LegacyComponentName] = false
dsc.Status.Components.TrainingOperator.ManagementSpec.ManagementState = s.GetManagementState(dsc)
dsc.Status.Components.TrainingOperator.TrainingOperatorCommonStatus = nil
+ dsc.Status.Components.TrainingOperator.Releases = nil
+
+ releases, err := status.GetReleaseStatus(odhdeploy.DefaultManifestPath, ComponentName)
+
+ if err != nil {
+ return err
+ }
nc := conditionsv1.Condition{
Type: ReadyConditionType,
@@ -84,6 +91,7 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
case operatorv1.Managed:
dsc.Status.InstalledComponents[LegacyComponentName] = true
dsc.Status.Components.TrainingOperator.TrainingOperatorCommonStatus = c.Status.TrainingOperatorCommonStatus.DeepCopy()
+ dsc.Status.Components.TrainingOperator.Releases = releases
if rc := meta.FindStatusCondition(c.Status.Conditions, status.ConditionTypeReady); rc != nil {
nc.Status = corev1.ConditionStatus(rc.Status)
diff --git a/controllers/components/trustyai/trustyai.go b/controllers/components/trustyai/trustyai.go
index 2dd4c138eb1..f25873f381b 100644
--- a/controllers/components/trustyai/trustyai.go
+++ b/controllers/components/trustyai/trustyai.go
@@ -75,6 +75,13 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
dsc.Status.InstalledComponents[LegacyComponentName] = false
dsc.Status.Components.TrustyAI.ManagementSpec.ManagementState = s.GetManagementState(dsc)
dsc.Status.Components.TrustyAI.TrustyAICommonStatus = nil
+ dsc.Status.Components.TrustyAI.Releases = nil
+
+ releases, err := status.GetReleaseStatus(odhdeploy.DefaultManifestPath, ComponentName)
+
+ if err != nil {
+ return err
+ }
nc := conditionsv1.Condition{
Type: ReadyConditionType,
@@ -87,6 +94,7 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
case operatorv1.Managed:
dsc.Status.InstalledComponents[LegacyComponentName] = true
dsc.Status.Components.TrustyAI.TrustyAICommonStatus = c.Status.TrustyAICommonStatus.DeepCopy()
+ dsc.Status.Components.TrustyAI.Releases = releases
if rc := meta.FindStatusCondition(c.Status.Conditions, status.ConditionTypeReady); rc != nil {
nc.Status = corev1.ConditionStatus(rc.Status)
diff --git a/controllers/components/workbenches/workbenches.go b/controllers/components/workbenches/workbenches.go
index 9e2f95cc8f3..671fa0c4164 100644
--- a/controllers/components/workbenches/workbenches.go
+++ b/controllers/components/workbenches/workbenches.go
@@ -83,6 +83,13 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
dsc.Status.InstalledComponents[LegacyComponentName] = false
dsc.Status.Components.Workbenches.ManagementSpec.ManagementState = s.GetManagementState(dsc)
dsc.Status.Components.Workbenches.WorkbenchesCommonStatus = nil
+ dsc.Status.Components.Workbenches.Releases = nil
+
+ releases, err := status.GetReleaseStatus(odhdeploy.DefaultManifestPath, ComponentName)
+
+ if err != nil {
+ return err
+ }
nc := conditionsv1.Condition{
Type: ReadyConditionType,
@@ -95,6 +102,7 @@ func (s *componentHandler) UpdateDSCStatus(dsc *dscv1.DataScienceCluster, obj cl
case operatorv1.Managed:
dsc.Status.InstalledComponents[LegacyComponentName] = true
dsc.Status.Components.Workbenches.WorkbenchesCommonStatus = c.Status.WorkbenchesCommonStatus.DeepCopy()
+ dsc.Status.Components.Workbenches.Releases = releases
if rc := meta.FindStatusCondition(c.Status.Conditions, status.ConditionTypeReady); rc != nil {
nc.Status = corev1.ConditionStatus(rc.Status)
diff --git a/controllers/status/status.go b/controllers/status/status.go
index 664c8bbfcff..bc8e616b0dc 100644
--- a/controllers/status/status.go
+++ b/controllers/status/status.go
@@ -19,7 +19,13 @@ limitations under the License.
package status
import (
+ "os"
+ "path/filepath"
+
+ "github.com/blang/semver/v4"
conditionsv1 "github.com/openshift/custom-resource-status/conditions/v1"
+ "github.com/operator-framework/api/pkg/lib/version"
+ "gopkg.in/yaml.v2"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -242,3 +248,61 @@ func SetStatusCondition(obj common.WithStatus, condition metav1.Condition) bool
s := obj.GetStatus()
return meta.SetStatusCondition(&s.Conditions, condition)
}
+
+// +k8s:deepcopy-gen=true
+type ReleaseFileMeta struct {
+ Releases []ComponentReleaseStatusMeta `json:"releases,omitempty"`
+}
+
+// +k8s:deepcopy-gen=true
+type ComponentReleaseStatusMeta struct {
+ Name string `yaml:"name,omitempty"`
+ Version string `yaml:"version,omitempty"`
+ RepoURL string `yaml:"repoURL,omitempty"`
+}
+
+// +k8s:deepcopy-gen=true
+type ComponentReleaseStatus struct {
+ Name string `json:"name,omitempty"`
+ Version version.OperatorVersion `json:"version,omitempty"`
+ RepoURL string `json:"repoURL,omitempty"`
+}
+
+// GetReleaseStatus reads odh_metadata.yaml file and parses release information.
+// If version is not set or set to "", return empty slice along with error.
+func GetReleaseStatus(defaultManifestPath string, componentName string) ([]ComponentReleaseStatus, error) {
+ var componentVersion semver.Version
+ var releaseInfo ReleaseFileMeta
+ var releaseStatus ComponentReleaseStatus
+ componentReleaseStatus := make([]ComponentReleaseStatus, 0)
+
+ yamlData, err := os.ReadFile(filepath.Join(defaultManifestPath, componentName, "odh_metadata.yaml"))
+ if err != nil {
+ if os.IsNotExist(err) {
+ return nil, nil
+ }
+ return nil, err
+ }
+
+ err = yaml.Unmarshal(yamlData, &releaseInfo)
+ if err != nil {
+ return nil, err
+ }
+
+ for _, release := range releaseInfo.Releases {
+ componentVersion, err = semver.Parse(release.Version)
+
+ if err != nil {
+ return nil, err
+ }
+
+ releaseStatus = ComponentReleaseStatus{
+ Name: release.Name,
+ Version: version.OperatorVersion{Version: componentVersion},
+ RepoURL: release.RepoURL,
+ }
+ componentReleaseStatus = append(componentReleaseStatus, releaseStatus)
+ }
+
+ return componentReleaseStatus, nil
+}
diff --git a/controllers/status/zz_generated.deepcopy.go b/controllers/status/zz_generated.deepcopy.go
new file mode 100644
index 00000000000..b8bf0ecde67
--- /dev/null
+++ b/controllers/status/zz_generated.deepcopy.go
@@ -0,0 +1,74 @@
+//go:build !ignore_autogenerated
+
+/*
+Copyright 2023.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by controller-gen. DO NOT EDIT.
+
+package status
+
+import ()
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ComponentReleaseStatus) DeepCopyInto(out *ComponentReleaseStatus) {
+ *out = *in
+ in.Version.DeepCopyInto(&out.Version)
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentReleaseStatus.
+func (in *ComponentReleaseStatus) DeepCopy() *ComponentReleaseStatus {
+ if in == nil {
+ return nil
+ }
+ out := new(ComponentReleaseStatus)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ComponentReleaseStatusMeta) DeepCopyInto(out *ComponentReleaseStatusMeta) {
+ *out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentReleaseStatusMeta.
+func (in *ComponentReleaseStatusMeta) DeepCopy() *ComponentReleaseStatusMeta {
+ if in == nil {
+ return nil
+ }
+ out := new(ComponentReleaseStatusMeta)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ReleaseFileMeta) DeepCopyInto(out *ReleaseFileMeta) {
+ *out = *in
+ if in.Releases != nil {
+ in, out := &in.Releases, &out.Releases
+ *out = make([]ComponentReleaseStatusMeta, len(*in))
+ copy(*out, *in)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseFileMeta.
+func (in *ReleaseFileMeta) DeepCopy() *ReleaseFileMeta {
+ if in == nil {
+ return nil
+ }
+ out := new(ReleaseFileMeta)
+ in.DeepCopyInto(out)
+ return out
+}
diff --git a/docs/api-overview.md b/docs/api-overview.md
index 926028e7d10..f3402ef2f1e 100644
--- a/docs/api-overview.md
+++ b/docs/api-overview.md
@@ -144,6 +144,7 @@ _Appears in:_
| `phase` _string_ | | | |
| `observedGeneration` _integer_ | | | |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#condition-v1-meta) array_ | | | |
+| `releases` _ComponentReleaseStatus array_ | | | |
#### DSCCodeFlare
@@ -177,6 +178,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `managementState` _[ManagementState](#managementstate)_ | Set to one of the following values:
- "Managed" : the operator is actively managing the component and trying to keep it active.
It will only upgrade the component if it is safe to do so
- "Removed" : the operator is actively managing the component and will not install it,
or if it is installed, the operator will try to remove it | | Enum: [Managed Removed]
|
+| `releases` _ComponentReleaseStatus array_ | | | |
#### DSCDashboard
@@ -210,6 +212,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `managementState` _[ManagementState](#managementstate)_ | Set to one of the following values:
- "Managed" : the operator is actively managing the component and trying to keep it active.
It will only upgrade the component if it is safe to do so
- "Removed" : the operator is actively managing the component and will not install it,
or if it is installed, the operator will try to remove it | | Enum: [Managed Removed]
|
+| `releases` _ComponentReleaseStatus array_ | | | |
#### DSCDataSciencePipelines
@@ -243,6 +246,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `managementState` _[ManagementState](#managementstate)_ | Set to one of the following values:
- "Managed" : the operator is actively managing the component and trying to keep it active.
It will only upgrade the component if it is safe to do so
- "Removed" : the operator is actively managing the component and will not install it,
or if it is installed, the operator will try to remove it | | Enum: [Managed Removed]
|
+| `releases` _ComponentReleaseStatus array_ | | | |
#### DSCKserve
@@ -279,6 +283,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `managementState` _[ManagementState](#managementstate)_ | Set to one of the following values:
- "Managed" : the operator is actively managing the component and trying to keep it active.
It will only upgrade the component if it is safe to do so
- "Removed" : the operator is actively managing the component and will not install it,
or if it is installed, the operator will try to remove it | | Enum: [Managed Removed]
|
+| `releases` _ComponentReleaseStatus array_ | | | |
#### DSCKueue
@@ -312,6 +317,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `managementState` _[ManagementState](#managementstate)_ | Set to one of the following values:
- "Managed" : the operator is actively managing the component and trying to keep it active.
It will only upgrade the component if it is safe to do so
- "Removed" : the operator is actively managing the component and will not install it,
or if it is installed, the operator will try to remove it | | Enum: [Managed Removed]
|
+| `releases` _ComponentReleaseStatus array_ | | | |
#### DSCModelMeshServing
@@ -345,6 +351,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `managementState` _[ManagementState](#managementstate)_ | Set to one of the following values:
- "Managed" : the operator is actively managing the component and trying to keep it active.
It will only upgrade the component if it is safe to do so
- "Removed" : the operator is actively managing the component and will not install it,
or if it is installed, the operator will try to remove it | | Enum: [Managed Removed]
|
+| `releases` _ComponentReleaseStatus array_ | | | |
#### DSCModelRegistry
@@ -379,6 +386,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `managementState` _[ManagementState](#managementstate)_ | Set to one of the following values:
- "Managed" : the operator is actively managing the component and trying to keep it active.
It will only upgrade the component if it is safe to do so
- "Removed" : the operator is actively managing the component and will not install it,
or if it is installed, the operator will try to remove it | | Enum: [Managed Removed]
|
+| `releases` _ComponentReleaseStatus array_ | | | |
#### DSCRay
@@ -412,6 +420,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `managementState` _[ManagementState](#managementstate)_ | Set to one of the following values:
- "Managed" : the operator is actively managing the component and trying to keep it active.
It will only upgrade the component if it is safe to do so
- "Removed" : the operator is actively managing the component and will not install it,
or if it is installed, the operator will try to remove it | | Enum: [Managed Removed]
|
+| `releases` _ComponentReleaseStatus array_ | | | |
#### DSCTrainingOperator
@@ -445,6 +454,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `managementState` _[ManagementState](#managementstate)_ | Set to one of the following values:
- "Managed" : the operator is actively managing the component and trying to keep it active.
It will only upgrade the component if it is safe to do so
- "Removed" : the operator is actively managing the component and will not install it,
or if it is installed, the operator will try to remove it | | Enum: [Managed Removed]
|
+| `releases` _ComponentReleaseStatus array_ | | | |
#### DSCTrustyAI
@@ -478,6 +488,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `managementState` _[ManagementState](#managementstate)_ | Set to one of the following values:
- "Managed" : the operator is actively managing the component and trying to keep it active.
It will only upgrade the component if it is safe to do so
- "Removed" : the operator is actively managing the component and will not install it,
or if it is installed, the operator will try to remove it | | Enum: [Managed Removed]
|
+| `releases` _ComponentReleaseStatus array_ | | | |
#### DSCWorkbenches
@@ -511,6 +522,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `managementState` _[ManagementState](#managementstate)_ | Set to one of the following values:
- "Managed" : the operator is actively managing the component and trying to keep it active.
It will only upgrade the component if it is safe to do so
- "Removed" : the operator is actively managing the component and will not install it,
or if it is installed, the operator will try to remove it | | Enum: [Managed Removed]
|
+| `releases` _ComponentReleaseStatus array_ | | | |
#### Dashboard
@@ -1085,6 +1097,7 @@ _Appears in:_
| `phase` _string_ | | | |
| `observedGeneration` _integer_ | | | |
| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#condition-v1-meta) array_ | | | |
+| `releases` _ComponentReleaseStatus array_ | | | |
#### ModelMeshServing