diff --git a/pkg/cloudcommon/db/namevalidator.go b/pkg/cloudcommon/db/namevalidator.go index 8793226d2c..6ebb6ac9f9 100644 --- a/pkg/cloudcommon/db/namevalidator.go +++ b/pkg/cloudcommon/db/namevalidator.go @@ -80,6 +80,10 @@ func alterNameValidator(model IModel, name string) error { } func GenerateName(manager IModelManager, ownerId mcclient.IIdentityProvider, hint string) (string, error) { + return GenerateName2(manager, ownerId, hint, nil) +} + +func GenerateName2(manager IModelManager, ownerId mcclient.IIdentityProvider, hint string, model IModel) (string, error) { _, pattern, patternLen := stringutils.ParseNamePattern(hint) var name string idx := 1 @@ -90,7 +94,13 @@ func GenerateName(manager IModelManager, ownerId mcclient.IIdentityProvider, hin idx += 1 } for { - uniq, err := isNameUnique(manager, ownerId, name) + var uniq bool + var err error + if model == nil { + uniq, err = isNameUnique(manager, ownerId, name) + } else { + uniq, err = isAlterNameUnique(model, name) + } if err != nil { return "", err } diff --git a/pkg/keystone/driver/ldap/sync.go b/pkg/keystone/driver/ldap/sync.go index 5517e67681..46b577ba98 100644 --- a/pkg/keystone/driver/ldap/sync.go +++ b/pkg/keystone/driver/ldap/sync.go @@ -174,7 +174,7 @@ func (self *SLDAPDriver) syncDomainInfo(ctx context.Context, info SDomainInfo) ( if err == nil { if domain.Name != info.Name { // sync domain name - newName, err := db.GenerateName(models.DomainManager, nil, info.Name) + newName, err := db.GenerateName2(models.DomainManager, nil, info.Name, domain) if err != nil { log.Errorf("sync existing domain name (%s=%s) generate fail %s", domain.Name, info.Name, err) } else {