feat(notify): compatible with webhook configuration

This commit is contained in:
rainzm
2021-06-24 10:30:06 +08:00
parent 311d0efb80
commit 83ac629652
+28
View File
@@ -100,12 +100,16 @@ func (rm *SRobotManager) InitializeData() error {
robots = append(robots, robot)
}
ctx := context.Background()
var webhookRobotId string
// insert new robot
for i := range robots {
err := rm.TableSpec().Insert(ctx, &robots[i])
if err != nil {
return err
}
if robots[i].Type == api.ROBOT_TYPE_WEBHOOK {
webhookRobotId = robots[i].Id
}
}
// delete old configs
for i := range configs {
@@ -117,6 +121,30 @@ func (rm *SRobotManager) InitializeData() error {
return err
}
}
// add webhook Robot to subscriber
if len(webhookRobotId) > 0 {
topics := make([]STopic, 0, 3)
q = TopicManager.Query().In("name", []string{DefaultResourceCreateDelete, DefaultResourceChangeConfig, DefaultResourceUpdate})
err := db.FetchModelObjects(TopicManager, q, &topics)
if err != nil {
return errors.Wrap(err, "unable to fetch topics")
}
// create subscribers
for i := range topics {
subscriber := SSubscriber{
TopicID: topics[i].Id,
Type: api.SUBSCRIBER_TYPE_ROBOT,
Identification: webhookRobotId,
ResourceScope: "system",
Scope: "system",
}
subscriber.Enabled = tristate.True
err := SubscriberManager.TableSpec().Insert(ctx, &subscriber)
if err != nil {
return errors.Wrapf(err, "unable to create subscriber %s", jsonutils.Marshal(subscriber))
}
}
}
return nil
}