diff --git a/api/hardwaremanagement/v1alpha1/conditions.go b/api/hardwaremanagement/v1alpha1/conditions.go index 4377b36f..d6a371e6 100644 --- a/api/hardwaremanagement/v1alpha1/conditions.go +++ b/api/hardwaremanagement/v1alpha1/conditions.go @@ -23,3 +23,22 @@ const ( // fulfilled. FailedCondition = "Failed" ) + +type ConditionType string + +// The following constants define the different types of conditions that will be set +const ( + Provisioned ConditionType = "Provisioned" + Unknown ConditionType = "Unknown" // indicates the condition has not been evaluated +) + +type ConditionReason string + +// The following constants define the different reasons that conditions will be set for +const ( + InProgress ConditionReason = "InProgress" + Completed ConditionReason = "Completed" + Unprovisioned ConditionReason = "Unprovisioned" + Failed ConditionReason = "Failed" + NotInitialized ConditionReason = "NotInitialized" +) diff --git a/api/hardwaremanagement/v1alpha1/node_pools.go b/api/hardwaremanagement/v1alpha1/node_pools.go index 6c2850cd..80a2fc7a 100644 --- a/api/hardwaremanagement/v1alpha1/node_pools.go +++ b/api/hardwaremanagement/v1alpha1/node_pools.go @@ -55,8 +55,8 @@ type NodePoolStatus struct { Properties Properties `json:"properties,omitempty"` // Conditions represent the observations of the current state of the NodePool. Possible - // values of the condition type are `Provisioned`, `Unprovisioned`, `Updating` and `Failed`. - Conditions []metav1.Condition `json:"conditions,omitempty"` + // values of the condition type are `Provisioned` and `Unknown`. + Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` } // NodePool is the schema for an allocation request of nodes diff --git a/config/crd/bases/hardwaremanagement.oran.openshift.io_nodepools.yaml b/config/crd/bases/hardwaremanagement.oran.openshift.io_nodepools.yaml index 1c087999..ff00c50b 100644 --- a/config/crd/bases/hardwaremanagement.oran.openshift.io_nodepools.yaml +++ b/config/crd/bases/hardwaremanagement.oran.openshift.io_nodepools.yaml @@ -79,7 +79,7 @@ spec: conditions: description: |- Conditions represent the observations of the current state of the NodePool. Possible - values of the condition type are `Provisioned`, `Unprovisioned`, `Updating` and `Failed`. + values of the condition type are `Provisioned` and `Unknown`. items: description: "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for diff --git a/internal/controllers/clusterrequest_controller.go b/internal/controllers/clusterrequest_controller.go index 371597d2..2f0ac72d 100644 --- a/internal/controllers/clusterrequest_controller.go +++ b/internal/controllers/clusterrequest_controller.go @@ -764,7 +764,7 @@ func (t *clusterRequestReconcilerTask) updateClusterInstanceProcessedStatus(ci * func (t *clusterRequestReconcilerTask) updateClusterProvisionStatus(ci *siteconfig.ClusterInstance) { // Search for ClusterInstance Provisioned condition ciProvisionedCondition := meta.FindStatusCondition( - ci.Status.Conditions, "Provisioned") + ci.Status.Conditions, string(hwv1alpha1.Provisioned)) if ciProvisionedCondition == nil { crClusterInstanceProcessedCond := meta.FindStatusCondition( @@ -1335,7 +1335,7 @@ func (t *clusterRequestReconcilerTask) waitForNodePoolProvision(ctx context.Cont ) } // Check if provisioning is completed - provisionedCondition := meta.FindStatusCondition(nodePool.Status.Conditions, "Provisioned") + provisionedCondition := meta.FindStatusCondition(nodePool.Status.Conditions, string(hwv1alpha1.Provisioned)) if provisionedCondition != nil && provisionedCondition.Status == metav1.ConditionTrue { t.logger.InfoContext( ctx, @@ -1553,43 +1553,20 @@ func (t *clusterRequestReconcilerTask) updateHardwareProvisioningStatus( if len(nodePool.Status.Conditions) > 0 { provisionedCondition := meta.FindStatusCondition( - nodePool.Status.Conditions, "Provisioned") - if provisionedCondition != nil && provisionedCondition.Status == metav1.ConditionTrue { + nodePool.Status.Conditions, string(hwv1alpha1.Provisioned)) + if provisionedCondition != nil { utils.SetStatusCondition(&t.object.Status.Conditions, utils.CRconditionTypes.HardwareProvisioned, - utils.CRconditionReasons.Completed, - metav1.ConditionTrue, - "Hareware provisioning completed", - ) + utils.ConditionReason(provisionedCondition.Reason), + provisionedCondition.Status, + provisionedCondition.Message) } else { - provisioningCondition := meta.FindStatusCondition( - nodePool.Status.Conditions, "Provisioning") - if provisioningCondition != nil && provisioningCondition.Status == metav1.ConditionTrue { - utils.SetStatusCondition(&t.object.Status.Conditions, - utils.CRconditionTypes.HardwareProvisioned, - utils.CRconditionReasons.InProgress, - metav1.ConditionFalse, - "Hareware provisioning is in progress", - ) - } else { - failedCondition := meta.FindStatusCondition( - nodePool.Status.Conditions, "Failed") - if failedCondition != nil && failedCondition.Status == metav1.ConditionTrue { - utils.SetStatusCondition(&t.object.Status.Conditions, - utils.CRconditionTypes.HardwareProvisioned, - utils.CRconditionReasons.Failed, - metav1.ConditionFalse, - "Hareware provisioning failed", - ) - } else { - utils.SetStatusCondition(&t.object.Status.Conditions, - utils.CRconditionTypes.HardwareProvisioned, - utils.CRconditionReasons.Unknown, - metav1.ConditionUnknown, - "Unknown state of hardware provisioning", - ) - } - } + utils.SetStatusCondition(&t.object.Status.Conditions, + utils.CRconditionTypes.HardwareProvisioned, + utils.CRconditionReasons.Unknown, + metav1.ConditionUnknown, + "Unknown state of hardware provisioning", + ) } if err := utils.UpdateK8sCRStatus(ctx, t.client, t.object); err != nil { @@ -1605,9 +1582,9 @@ func (t *clusterRequestReconcilerTask) updateHardwareProvisioningStatus( meta.SetStatusCondition( &nodePool.Status.Conditions, metav1.Condition{ - Type: "Unknown", + Type: string(hwv1alpha1.Unknown), Status: metav1.ConditionUnknown, - Reason: "NotInitialized", + Reason: string(hwv1alpha1.NotInitialized), }, ) if err := utils.UpdateK8sCRStatus(ctx, t.client, nodePool); err != nil { diff --git a/vendor/github.com/openshift-kni/oran-o2ims/api/hardwaremanagement/v1alpha1/conditions.go b/vendor/github.com/openshift-kni/oran-o2ims/api/hardwaremanagement/v1alpha1/conditions.go index 4377b36f..d6a371e6 100644 --- a/vendor/github.com/openshift-kni/oran-o2ims/api/hardwaremanagement/v1alpha1/conditions.go +++ b/vendor/github.com/openshift-kni/oran-o2ims/api/hardwaremanagement/v1alpha1/conditions.go @@ -23,3 +23,22 @@ const ( // fulfilled. FailedCondition = "Failed" ) + +type ConditionType string + +// The following constants define the different types of conditions that will be set +const ( + Provisioned ConditionType = "Provisioned" + Unknown ConditionType = "Unknown" // indicates the condition has not been evaluated +) + +type ConditionReason string + +// The following constants define the different reasons that conditions will be set for +const ( + InProgress ConditionReason = "InProgress" + Completed ConditionReason = "Completed" + Unprovisioned ConditionReason = "Unprovisioned" + Failed ConditionReason = "Failed" + NotInitialized ConditionReason = "NotInitialized" +) diff --git a/vendor/github.com/openshift-kni/oran-o2ims/api/hardwaremanagement/v1alpha1/node_pools.go b/vendor/github.com/openshift-kni/oran-o2ims/api/hardwaremanagement/v1alpha1/node_pools.go index 6c2850cd..80a2fc7a 100644 --- a/vendor/github.com/openshift-kni/oran-o2ims/api/hardwaremanagement/v1alpha1/node_pools.go +++ b/vendor/github.com/openshift-kni/oran-o2ims/api/hardwaremanagement/v1alpha1/node_pools.go @@ -55,8 +55,8 @@ type NodePoolStatus struct { Properties Properties `json:"properties,omitempty"` // Conditions represent the observations of the current state of the NodePool. Possible - // values of the condition type are `Provisioned`, `Unprovisioned`, `Updating` and `Failed`. - Conditions []metav1.Condition `json:"conditions,omitempty"` + // values of the condition type are `Provisioned` and `Unknown`. + Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` } // NodePool is the schema for an allocation request of nodes