fix: generate unique name should exclude existing name

This commit is contained in:
Qiu Jian
2019-07-01 18:13:46 +08:00
parent c0e0806dca
commit d45e2e7976
2 changed files with 12 additions and 2 deletions
+11 -1
View File
@@ -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
}
+1 -1
View File
@@ -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 {