mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 02:37:24 +08:00
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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user