diff --git a/api/v1alpha1/apiv2definition_types.go b/api/v1alpha1/apiv2definition_types.go index 6b10dc510..e244385b0 100644 --- a/api/v1alpha1/apiv2definition_types.go +++ b/api/v1alpha1/apiv2definition_types.go @@ -186,8 +186,8 @@ func (api *ApiDefinition) generateEmptyPlanIDs() { plan.CrossID = uuid.FromStrings(api.Spec.ID, separator, plan.Name) } - if plan.ID == "" { - plan.ID = uuid.FromStrings(plan.CrossID, separator, plan.Name) + if id, ok := api.Status.Plans[plan.CrossID]; ok { + plan.ID = id } } } diff --git a/controllers/apim/apidefinition/internal/update.go b/controllers/apim/apidefinition/internal/update.go index a11fc7898..9e7b2ac2d 100644 --- a/controllers/apim/apidefinition/internal/update.go +++ b/controllers/apim/apidefinition/internal/update.go @@ -80,6 +80,7 @@ func createOrUpdateV2(ctx context.Context, apiDefinition *v1alpha1.ApiDefinition } if spec.IsLocal { + retrieveMgmtPlanIds(spec, status) return updateConfigMap(ctx, cp) } @@ -136,3 +137,14 @@ func createOrUpdateV4(ctx context.Context, apiDefinition *v1alpha1.ApiV4Definiti } return nil } + +// Retrieve the plan ids from the API CRD status. +func retrieveMgmtPlanIds(spec *v1alpha1.ApiDefinitionV2Spec, status *base.Status) { + plans := spec.Plans + planIds := status.Plans + + for _, plan := range plans { + plan.ID = planIds[plan.CrossID] + plan.Api = &status.ID + } +}