mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-01 15:07:17 +08:00
fix(notify): 对所有通知默认加入系统管理员接收人
This commit is contained in:
@@ -34,6 +34,7 @@ func InitDB() error {
|
||||
ReceiverNotificationManager,
|
||||
TopicManager,
|
||||
RobotManager,
|
||||
SubscriberManager,
|
||||
} {
|
||||
err := manager.InitializeData()
|
||||
if err != nil {
|
||||
|
||||
@@ -49,7 +49,9 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/httperrors"
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/auth"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/identity"
|
||||
modules "yunion.io/x/onecloud/pkg/mcclient/modules/identity"
|
||||
"yunion.io/x/onecloud/pkg/notify/options"
|
||||
"yunion.io/x/onecloud/pkg/util/logclient"
|
||||
"yunion.io/x/onecloud/pkg/util/stringutils2"
|
||||
)
|
||||
@@ -624,3 +626,46 @@ func (sm *SSubscriberManager) QueryDistinctExtraField(q *sqlchemy.SQuery, field
|
||||
}
|
||||
return q, nil
|
||||
}
|
||||
|
||||
func (sm *SSubscriberManager) InitializeData() error {
|
||||
ctx := context.Background()
|
||||
session := auth.GetAdminSession(ctx, options.Options.Region)
|
||||
// 获取系统管理员角色id
|
||||
params := map[string]interface{}{
|
||||
"project_domain": "default",
|
||||
}
|
||||
role, err := identity.RolesV3.Get(session, "admin", jsonutils.Marshal(params))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "identity.RolesV3.List")
|
||||
}
|
||||
roleId, _ := role.GetString("id")
|
||||
q := TopicManager.Query()
|
||||
topics := []STopic{}
|
||||
err = db.FetchModelObjects(TopicManager, q, &topics)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "FetchModelObjects topic")
|
||||
}
|
||||
for _, topic := range topics {
|
||||
q := sm.Query()
|
||||
q = q.Equals("topic_id", topic.Id)
|
||||
q = q.Equals("type", api.SUBSCRIBER_TYPE_ROLE)
|
||||
q = q.Equals("identification", roleId)
|
||||
count, err := q.CountWithError()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "CountWithError")
|
||||
}
|
||||
if count != 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
subscriber := SSubscriber{}
|
||||
subscriber.Type = api.SUBSCRIBER_TYPE_ROLE
|
||||
subscriber.Identification = roleId
|
||||
subscriber.TopicID = topic.Id
|
||||
subscriber.Scope = api.SUBSCRIBER_SCOPE_SYSTEM
|
||||
subscriber.ResourceScope = api.SUBSCRIBER_SCOPE_SYSTEM
|
||||
subscriber.Enabled = tristate.True
|
||||
sm.TableSpec().Insert(ctx, &subscriber)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user