Merge pull request #1458 from swordqiu/hotfix/qj-domain-delete-bugfix-20190701

fix: 1. idp sync fail to sync group domainId 2. idp delete fail
This commit is contained in:
yunion-ci-robot
2019-07-01 18:51:55 +08:00
committed by GitHub
5 changed files with 23 additions and 6 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
}
+2 -2
View File
@@ -1584,9 +1584,9 @@ func (manager *SNetworkManager) InitializeData() error {
}
func (self *SNetwork) ValidateUpdateCondition(ctx context.Context) error {
if len(self.ExternalId) > 0 {
/*if len(self.ExternalId) > 0 {
return httperrors.NewConflictError("Cannot update external resource")
}
}*/
return self.SSharableVirtualResourceBase.ValidateUpdateCondition(ctx)
}
+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 {
+5 -2
View File
@@ -176,7 +176,7 @@ func (manager *SGroupManager) RegisterExternalGroup(ctx context.Context, idpId s
group := SGroup{}
group.SetModelManager(manager, &group)
q := manager.Query().Equals("id", pubId)
q := manager.RawQuery().Equals("id", pubId)
err = q.First(&group)
if err != nil && err != sql.ErrNoRows {
return nil, errors.Wrap(err, "Query")
@@ -191,9 +191,12 @@ func (manager *SGroupManager) RegisterExternalGroup(ctx context.Context, idpId s
if err != nil {
return nil, errors.Wrap(err, "Insert")
}
} else if group.Displayname != groupName {
} else {
_, err = db.Update(&group, func() error {
group.DomainId = domainId
group.Name = groupName
group.Displayname = groupName
group.MarkUnDelete()
return nil
})
if err != nil {
+4
View File
@@ -627,6 +627,10 @@ func (self *SIdentityProvider) Purge(ctx context.Context, userCred mcclient.Toke
if err != nil {
return errors.Wrap(err, "domain.ValidatePurgeCondition")
}
err = domains[i].UnlinkIdp(self.Id)
if err != nil {
return errors.Wrap(err, "domains[i].UnlinkIdp")
}
err = domains[i].Delete(ctx, userCred)
if err != nil {
return errors.Wrap(err, "delete domain")