From a7e545f32250632dfbdc8b2b03ef46435555880b Mon Sep 17 00:00:00 2001 From: ioito Date: Tue, 27 Dec 2022 15:15:37 +0800 Subject: [PATCH] fix(region): external project sync --- pkg/compute/models/external_projects.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkg/compute/models/external_projects.go b/pkg/compute/models/external_projects.go index e68c6b0e17..135b265f8a 100644 --- a/pkg/compute/models/external_projects.go +++ b/pkg/compute/models/external_projects.go @@ -400,6 +400,7 @@ func (manager *SExternalProjectManager) newFromCloudProject(ctx context.Context, if err != nil { return nil, errors.Wrapf(err, "extModel.GetTags") } + find := false if pm.Rules != nil { for _, rule := range *pm.Rules { domainId, projectId, newProj, isMatch := rule.IsMatchTags(extTags) @@ -412,11 +413,22 @@ func (manager *SExternalProjectManager) newFromCloudProject(ctx context.Context, if len(domainId) > 0 && len(projectId) > 0 { project.DomainId = domainId project.ProjectId = projectId + find = true break } } } } + if !find && account.AutoCreateProject { + desc := fmt.Sprintf("auto create from cloud project %s (%s)", project.Name, project.ExternalId) + domainId, projectId, err := account.getOrCreateTenant(ctx, project.Name, project.DomainId, "", desc) + if err != nil { + log.Errorf("failed to get or create tenant %s(%s) %v", project.Name, project.ExternalId, err) + } else { + project.DomainId = domainId + project.ProjectId = projectId + } + } } else if account.AutoCreateProject { desc := fmt.Sprintf("auto create from cloud project %s (%s)", project.Name, project.ExternalId) domainId, projectId, err := account.getOrCreateTenant(ctx, project.Name, project.DomainId, "", desc)