Skip to content

Commit

Permalink
Merge pull request #589 from bjwswang/bug
Browse files Browse the repository at this point in the history
fix: avoid to update resource status with explictly status check
  • Loading branch information
bjwswang committed Jan 19, 2024
2 parents deeca83 + e07201e commit 599497a
Show file tree
Hide file tree
Showing 14 changed files with 304 additions and 131 deletions.
42 changes: 42 additions & 0 deletions api/base/v1alpha1/datasource.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ limitations under the License.

package v1alpha1

import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

const (
LabelDatasourceType = Group + "/datasource-type"
)
Expand All @@ -41,3 +46,40 @@ func (ds DatasourceSpec) Type() DatasourceType {
return DatasourceTypeUnknown
}
}

func (datasource Datasource) ReadyCondition() Condition {
currCon := datasource.Status.GetCondition(TypeReady)
// return current condition if condition not changed
if currCon.Status == corev1.ConditionTrue && currCon.Reason == ReasonAvailable {
return currCon
}
return Condition{
Type: TypeReady,
Status: corev1.ConditionTrue,
Reason: ReasonAvailable,
Message: "Check Success",
LastTransitionTime: metav1.Now(),
LastSuccessfulTime: metav1.Now(),
}
}

func (datasource Datasource) ErrorCondition(msg string) Condition {
currCon := datasource.Status.GetCondition(TypeReady)
// return current condition if condition not changed
if currCon.Status == corev1.ConditionFalse && currCon.Reason == ReasonUnavailable && currCon.Message == msg {
return currCon
}
// keep original LastSuccessfulTime if have
lastSuccessfulTime := metav1.Now()
if currCon.LastSuccessfulTime.IsZero() {
lastSuccessfulTime = currCon.LastSuccessfulTime
}
return Condition{
Type: TypeReady,
Status: corev1.ConditionFalse,
Reason: ReasonUnavailable,
Message: msg,
LastSuccessfulTime: lastSuccessfulTime,
LastTransitionTime: metav1.Now(),
}
}
39 changes: 39 additions & 0 deletions api/base/v1alpha1/embedder.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ package v1alpha1
import (
"context"

corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/dynamic"
"sigs.k8s.io/controller-runtime/pkg/client"

Expand Down Expand Up @@ -75,3 +77,40 @@ func (e Embedder) Get3rdPartyModels() []string {

return []string{}
}

func (e Embedder) ReadyCondition(msg string) Condition {
currCon := e.Status.GetCondition(TypeReady)
// return current condition if condition not changed
if currCon.Status == corev1.ConditionTrue && currCon.Reason == ReasonAvailable && currCon.Message == msg {
return currCon
}
return Condition{
Type: TypeReady,
Status: corev1.ConditionTrue,
Reason: ReasonAvailable,
Message: msg,
LastTransitionTime: metav1.Now(),
LastSuccessfulTime: metav1.Now(),
}
}

func (e Embedder) ErrorCondition(msg string) Condition {
currCon := e.Status.GetCondition(TypeReady)
// return current condition if condition not changed
if currCon.Status == corev1.ConditionFalse && currCon.Reason == ReasonUnavailable && currCon.Message == msg {
return currCon
}
// keep original LastSuccessfulTime if have
lastSuccessfulTime := metav1.Now()
if currCon.LastSuccessfulTime.IsZero() {
lastSuccessfulTime = currCon.LastSuccessfulTime
}
return Condition{
Type: TypeReady,
Status: corev1.ConditionFalse,
Reason: ReasonUnavailable,
Message: msg,
LastSuccessfulTime: lastSuccessfulTime,
LastTransitionTime: metav1.Now(),
}
}
39 changes: 39 additions & 0 deletions api/base/v1alpha1/llm.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ package v1alpha1
import (
"context"

corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/dynamic"
"sigs.k8s.io/controller-runtime/pkg/client"

Expand Down Expand Up @@ -84,3 +86,40 @@ func (llm LLM) Get3rdPartyModels() []string {
}
return []string{}
}

func (llm LLM) ReadyCondition(msg string) Condition {
currCon := llm.Status.GetCondition(TypeReady)
// return current condition if condition not changed
if currCon.Status == corev1.ConditionTrue && currCon.Reason == ReasonAvailable && currCon.Message == msg {
return currCon
}
return Condition{
Type: TypeReady,
Status: corev1.ConditionTrue,
Reason: ReasonAvailable,
Message: msg,
LastTransitionTime: metav1.Now(),
LastSuccessfulTime: metav1.Now(),
}
}

func (llm LLM) ErrorCondition(msg string) Condition {
currCon := llm.Status.GetCondition(TypeReady)
// return current condition if condition not changed
if currCon.Status == corev1.ConditionFalse && currCon.Reason == ReasonUnavailable && currCon.Message == msg {
return currCon
}
// keep original LastSuccessfulTime if have
lastSuccessfulTime := metav1.Now()
if currCon.LastSuccessfulTime.IsZero() {
lastSuccessfulTime = currCon.LastSuccessfulTime
}
return Condition{
Type: TypeReady,
Status: corev1.ConditionFalse,
Reason: ReasonUnavailable,
Message: msg,
LastSuccessfulTime: lastSuccessfulTime,
LastTransitionTime: metav1.Now(),
}
}
40 changes: 40 additions & 0 deletions api/base/v1alpha1/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ package v1alpha1
import (
"fmt"
"strings"

corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

const (
Expand Down Expand Up @@ -58,3 +61,40 @@ func (model Model) FullPath() string {
func (model Model) ObjectPath() string {
return fmt.Sprintf("model/%s/", model.Name)
}

func (model Model) ReadyCondition() Condition {
currCon := model.Status.GetCondition(TypeReady)
// return current condition if condition not changed
if currCon.Status == corev1.ConditionTrue && currCon.Reason == ReasonAvailable {
return currCon
}
return Condition{
Type: TypeReady,
Status: corev1.ConditionTrue,
Reason: ReasonAvailable,
Message: "Check Success",
LastTransitionTime: metav1.Now(),
LastSuccessfulTime: metav1.Now(),
}
}

func (model Model) ErrorCondition(msg string) Condition {
currCon := model.Status.GetCondition(TypeReady)
// return current condition if condition not changed
if currCon.Status == corev1.ConditionFalse && currCon.Reason == ReasonUnavailable && currCon.Message == msg {
return currCon
}
// keep original LastSuccessfulTime if have
lastSuccessfulTime := metav1.Now()
if currCon.LastSuccessfulTime.IsZero() {
lastSuccessfulTime = currCon.LastSuccessfulTime
}
return Condition{
Type: TypeReady,
Status: corev1.ConditionFalse,
Reason: ReasonUnavailable,
Message: msg,
LastSuccessfulTime: lastSuccessfulTime,
LastTransitionTime: metav1.Now(),
}
}
74 changes: 70 additions & 4 deletions apiserver/graph/generated/generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 5 additions & 4 deletions apiserver/graph/generated/models_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions apiserver/graph/schema/entrypoint.graphqls
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ type TypedObjectReference {
apiGroup: String
kind: String!
name: String!
displayName: String
namespace: String
}

Expand Down
9 changes: 9 additions & 0 deletions apiserver/pkg/common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -221,3 +221,12 @@ func PagePosition(page, size, total int) (int, int) {
}
return start, end
}

func TypedObjectReferenceToInput(ref generated.TypedObjectReference) generated.TypedObjectReferenceInput {
return generated.TypedObjectReferenceInput{
APIGroup: ref.APIGroup,
Kind: ref.Kind,
Namespace: ref.Namespace,
Name: ref.Name,
}
}
Loading

0 comments on commit 599497a

Please sign in to comment.