From 547fdd3ff6433f01b4275bb5356ed9d9774750db Mon Sep 17 00:00:00 2001 From: zzxwill Date: Wed, 5 Aug 2020 20:05:44 +0800 Subject: [PATCH] refine trait detaching --- pkg/cmd/trait_bind.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/pkg/cmd/trait_bind.go b/pkg/cmd/trait_bind.go index 7dad2e6fc..47d7f8a52 100644 --- a/pkg/cmd/trait_bind.go +++ b/pkg/cmd/trait_bind.go @@ -187,19 +187,25 @@ func (o *commandOptions) DetachTrait(cmd *cobra.Command, args []string, ctx cont } _, _, tKind := cmdutil.GetTraitNameAliasKind(ctx, c, namespace, o.TraitAlias) + var traitDefinition corev1alpha2.TraitDefinition - for _, com := range o.AppConfig.Spec.Components { + for i, com := range o.AppConfig.Spec.Components { + traits := com.Traits if com.ComponentName == appName { - traits := com.Traits - traitDefinitionList := cmdutil.ListTraitDefinitionsByApplicationConfiguration(o.AppConfig) - for i := 0; i < len(o.AppConfig.Spec.Components[0].Traits); i++ { - if strings.EqualFold(traitDefinitionList[i].Kind, tKind) { - o.AppConfig.Spec.Components[0].Traits = append(traits[:i], traits[i+1:]...) - i-- + for j := 0; j < len(traits); j++ { + err := json.Unmarshal(traits[j].Trait.Raw, &traitDefinition) + if err != nil { + return err + } + if strings.EqualFold(traitDefinition.Kind, tKind) { + traits = append(traits[:j], traits[j+1:]...) + j-- } } } + o.AppConfig.Spec.Components[i].Traits = traits } + return nil }