From fd39804dc9d500fd455ebc737004c7fdbbeae4a8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 Jan 2023 13:59:35 +0800 Subject: [PATCH] Fix: maintain compatibility with old project data (#5331) Signed-off-by: barnettZQG (cherry picked from commit fef55b9b1bbb43bab8ec1a5bae0e3f8d60527a76) Co-authored-by: barnettZQG --- pkg/apiserver/domain/service/workflow.go | 4 ++-- pkg/apiserver/event/sync/convert.go | 27 +++++++++++++++++++----- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/pkg/apiserver/domain/service/workflow.go b/pkg/apiserver/domain/service/workflow.go index 5641ff8bd..661b3ef0c 100644 --- a/pkg/apiserver/domain/service/workflow.go +++ b/pkg/apiserver/domain/service/workflow.go @@ -550,10 +550,10 @@ func (w *workflowServiceImpl) syncWorkflowStatus(ctx context.Context, record.Message = status.Message record.Mode = status.Mode - if cb := app.Status.Workflow.ContextBackend; cb != nil && workflowContext == nil { + if cb := app.Status.Workflow.ContextBackend; cb != nil && workflowContext == nil && cb.Namespace != "" && cb.Name != "" { var cm corev1.ConfigMap if err := w.KubeClient.Get(ctx, types.NamespacedName{Namespace: cb.Namespace, Name: cb.Name}, &cm); err != nil { - klog.Error(err, "failed to load the context values", "Application", app.Name) + klog.Errorf("failed to load the context values of the application %s:%s", app.Name, err.Error()) } record.ContextValue = cm.Data } diff --git a/pkg/apiserver/event/sync/convert.go b/pkg/apiserver/event/sync/convert.go index 6273457c9..47cbdb27b 100644 --- a/pkg/apiserver/event/sync/convert.go +++ b/pkg/apiserver/event/sync/convert.go @@ -46,11 +46,7 @@ func (c *CR2UX) ConvertApp2DatastoreApp(ctx context.Context, targetApp *v1beta1. } sourceOfTruth := model.FromCR if _, ok := targetApp.Labels[oam.LabelAddonName]; ok && strings.HasPrefix(targetApp.Name, "addon-") && targetApp.Namespace == apitypes.DefaultKubeVelaNS { - project = v1.CreateProjectRequest{ - Name: model.DefaultSystemProject, - Alias: model.DefaultSystemProjectAlias, - Namespace: targetApp.Namespace, - } + project = c.generateSystemProject(ctx, targetApp.Namespace) sourceOfTruth = model.FromInner } @@ -160,6 +156,27 @@ func (c *CR2UX) ConvertApp2DatastoreApp(ctx context.Context, targetApp *v1beta1. return dsApp, nil } +// In order to maintain compatibility with old data, +// if there is a project named addons, continue to use it, but change the alias to System. +func (c *CR2UX) generateSystemProject(ctx context.Context, ns string) v1.CreateProjectRequest { + var pro = model.Project{Name: "addons"} + if err := c.ds.Get(ctx, &pro); err == nil { + if pro.Alias == "Addons" { + pro.Alias = model.DefaultSystemProjectAlias + pro.Namespace = ns + if err := c.ds.Put(ctx, &pro); err != nil { + klog.Warningf("failed to update the project alias to System:%s", err.Error()) + } + } + return v1.CreateProjectRequest{Name: pro.Name, Alias: pro.Alias, Namespace: pro.Namespace} + } + return v1.CreateProjectRequest{ + Name: model.DefaultSystemProject, + Alias: model.DefaultSystemProjectAlias, + Namespace: ns, + } +} + func (c *CR2UX) generateEnv(ctx context.Context, defaultProject string, envNamespace string, envTargetNames map[string]string) (*model.Env, string, error) { existEnv := &model.Env{Namespace: envNamespace} existEnvs, err := c.ds.List(ctx, existEnv, nil)