Signed-off-by: Jian.Li <lj176172@alibaba-inc.com>
This commit is contained in:
Jian.Li
2022-01-19 15:30:00 +08:00
parent 7bdd3dd6e8
commit 2c26caedd3
2 changed files with 36 additions and 1 deletions
@@ -17,7 +17,10 @@
package v1beta1
import (
"encoding/json"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
@@ -138,3 +141,30 @@ func (app *Application) GetComponent(workloadType string) *common.ApplicationCom
}
return nil
}
// Unstructured convert application to unstructured.Unstructured.
func (app *Application) Unstructured() (*unstructured.Unstructured, error) {
var obj = &unstructured.Unstructured{}
app.SetGroupVersionKind(ApplicationKindVersionKind)
bt, err := json.Marshal(app)
if err != nil {
return nil, err
}
if err := obj.UnmarshalJSON(bt); err != nil {
return nil, err
}
if app.Status.Services == nil {
unstructured.SetNestedSlice(obj.Object, []interface{}{}, "status", "services")
}
if app.Status.AppliedResources == nil {
unstructured.SetNestedSlice(obj.Object, []interface{}{}, "status", "appliedResources")
}
if wfStatus := app.Status.Workflow; wfStatus != nil && wfStatus.Steps == nil {
unstructured.SetNestedSlice(obj.Object, []interface{}{}, "status", "workflow", "steps")
}
return obj, nil
}
@@ -388,7 +388,12 @@ func (r *Reconciler) patchStatus(ctx context.Context, app *v1beta1.Application,
func (r *Reconciler) updateStatus(ctx context.Context, app *v1beta1.Application, phase common.ApplicationPhase) error {
app.Status.Phase = phase
updateObservedGeneration(app)
return r.Status().Update(ctx, app)
obj, err := app.Unstructured()
if err != nil {
return err
}
return r.Status().Update(ctx, obj)
}
func (r *Reconciler) doWorkflowFinish(app *v1beta1.Application, wf workflow.Workflow) error {