NTP-16585 | updated ee-monitoring webhook call and calling this webhook on houston creation (#463)

This commit is contained in:
Shashank Shekhar
2024-11-29 18:38:26 +05:30
committed by GitHub
parent bf9052f75c
commit 0ec0989971
7 changed files with 41 additions and 25 deletions

View File

@@ -13,9 +13,10 @@ type IncidentDetails struct {
}
type SeverityUpdateRequestMetaData struct {
OldSeverity SeverityInfo `json:"oldSeverity"`
NewSeverity SeverityInfo `json:"newSeverity"`
UpdatedBy string `json:"updatedBy"`
CurrentSeverity SeverityInfo `json:"currentSeverity"`
UpdatedBy string `json:"updatedBy"`
ResponderTeam string `json:"responderTeam"`
SlackChannelId string `json:"slackChannelId"`
}
type SeverityInfo struct {

View File

@@ -24,7 +24,9 @@ func (client *EEMonitoringServiceClientImpl) TriggerSeverityUpdateWebhook(
incidentId uint,
triggerredBy string,
requestId string,
oldSeverity, newSeverity contracts.SeverityInfo,
currentSeverity contracts.SeverityInfo,
responderTeam string,
slackChannelId string,
) error {
logger.Info(fmt.Sprintf("Triggering severity update webhook for requestId: %s", requestId))
fullURL := client.BaseURL + client.WebhookAPIPath
@@ -39,9 +41,10 @@ func (client *EEMonitoringServiceClientImpl) TriggerSeverityUpdateWebhook(
}
metaData := contracts.SeverityUpdateRequestMetaData{
OldSeverity: oldSeverity,
NewSeverity: newSeverity,
UpdatedBy: triggerredBy,
CurrentSeverity: currentSeverity,
UpdatedBy: triggerredBy,
ResponderTeam: responderTeam,
SlackChannelId: slackChannelId,
}
requestBody := contracts.SeverityUpdateWebhookRequest{
Requester: "HOUSTON",

View File

@@ -8,7 +8,8 @@ import (
type EEMonitoringServiceClient interface {
TriggerSeverityUpdateWebhook(
incidentId uint, triggerredBy string, requestId string, oldSeverity, newSeverity contracts.SeverityInfo,
incidentId uint, triggerredBy string, requestId string, currentSeverity contracts.SeverityInfo,
responderTeam string, slackChannelId string,
) error
}

View File

@@ -53,7 +53,7 @@ func (suite *EEMonitoringServiceSuite) Test_TriggerWebhook_ErrorResponseCase() {
defer close(responseChannel)
err := NewEEMonitoringServiceClient(restClient).TriggerSeverityUpdateWebhook(
1, "test", requestId, getOldSeverity(), getNewSeverity(),
1, "test", requestId, getCurrentSeverity(), "Houston-testing", "slack-channel",
)
suite.Error(err)
}
@@ -85,7 +85,7 @@ func (suite *EEMonitoringServiceSuite) Test_TriggerWebhook_SuccessCase() {
responseChannel := make(chan service.MonitoringServiceClientResponse)
defer close(responseChannel)
err := NewEEMonitoringServiceClient(restClient).TriggerSeverityUpdateWebhook(
1, "test", requestId, getOldSeverity(), getNewSeverity(),
1, "test", requestId, getCurrentSeverity(), "Houston-testing", "slack-channel",
)
suite.Nil(err)
@@ -97,9 +97,10 @@ func getRequestBody() *contracts.SeverityUpdateWebhookRequest {
IncidentID: 1,
}
metaData := contracts.SeverityUpdateRequestMetaData{
OldSeverity: getOldSeverity(),
NewSeverity: getNewSeverity(),
UpdatedBy: "test",
CurrentSeverity: getCurrentSeverity(),
UpdatedBy: "test",
ResponderTeam: "Houston-testing",
SlackChannelId: "slack-channel",
}
return &contracts.SeverityUpdateWebhookRequest{
Requester: "HOUSTON",
@@ -109,11 +110,8 @@ func getRequestBody() *contracts.SeverityUpdateWebhookRequest {
}
}
func getOldSeverity() contracts.SeverityInfo {
return contracts.SeverityInfo{Name: "Sev-1", ID: 2}
}
func getNewSeverity() contracts.SeverityInfo {
return contracts.SeverityInfo{Name: "Sev-0", ID: 1}
func getCurrentSeverity() contracts.SeverityInfo {
return contracts.SeverityInfo{Name: "Sev-0", ID: 2}
}
func TestEEMonitoringServiceClient(t *testing.T) {

View File

@@ -1428,8 +1428,6 @@ func (i *IncidentServiceV2) UpdateSeverityId(
return nil
}
oldSeverity := contracts.SeverityInfo{Name: incidentEntity.Severity.Name, ID: incidentEntity.SeverityId}
severityId, err := strconv.Atoi(request.SeverityId)
if err != nil {
logger.Error("String conversion to int failed in UpdateSeverityId for "+request.SeverityId, zap.Error(err))
@@ -1522,23 +1520,36 @@ func (i *IncidentServiceV2) UpdateSeverityId(
}()
}
go i.SendAlert(incidentEntity)
i.eeMonitoringServiceWebhookCall(incidentEntity, oldSeverity)
go i.EeMonitoringServiceWebhookCall(incidentEntity)
}
}
return nil
}
func (i *IncidentServiceV2) eeMonitoringServiceWebhookCall(
incidentEntity *incident.IncidentEntity, oldSeverity contracts.SeverityInfo,
func (i *IncidentServiceV2) EeMonitoringServiceWebhookCall(
incidentEntity *incident.IncidentEntity,
) {
task := func(ctx context.Context) error {
updatedIncident, err := i.incidentRepository.FindIncidentById(incidentEntity.ID)
if err != nil {
return errors.New(fmt.Sprintf("error in fetching incident by id: %+v", err))
}
newSeverity := contracts.SeverityInfo{Name: updatedIncident.Severity.Name, ID: updatedIncident.SeverityId}
currentSeverity := contracts.SeverityInfo{Name: updatedIncident.Severity.Name, ID: updatedIncident.SeverityId}
teamEntity, err := i.teamRepository.FindTeamById(updatedIncident.TeamId)
if err != nil {
return errors.New(fmt.Sprintf("error in fetching team by id: %+v", err))
}
var triggerredBy = incidentEntity.UpdatedBy
if triggerredBy == "" || triggerredBy == "null" {
triggerredBy = incidentEntity.CreatedBy
}
err = i.eeMonitoringServiceClient.TriggerSeverityUpdateWebhook(
incidentEntity.ID, incidentEntity.UpdatedBy, uuid.NewString(), oldSeverity, newSeverity,
incidentEntity.ID,
triggerredBy,
uuid.NewString(),
currentSeverity,
teamEntity.Name,
incidentEntity.SlackChannel,
)
if err != nil {
return errors.New(fmt.Sprintf("error in triggering severity update webhook: %+v", err))

View File

@@ -41,4 +41,5 @@ type IIncidentService interface {
CanUserWithEmailAccessIncidentWithId(userEmail string, incidentId uint) bool
GetIncidentsByIds(incidentIds []uint) ([]incident.IncidentDTO, error)
MoveIncidentsToInvestigating() error
EeMonitoringServiceWebhookCall(incidentEntity *incident.IncidentEntity)
}

View File

@@ -243,6 +243,7 @@ func (i *incidentOrchestratorImpl) CreateIncident(
blazeGroupChannelID,
)
}()
i.incidentService.EeMonitoringServiceWebhookCall(incidentEntity)
incidentResponse := response.ConvertToIncidentResponse(*incidentEntity)
return &incidentResponse, nil
}