* INFRA-3811 : Remove severity, business affected, contributing factors, additional tags and add impact * INFRA-3811 : PR Review comments
67 lines
2.3 KiB
Go
67 lines
2.3 KiB
Go
package service
|
|
|
|
import (
|
|
"github.com/slack-go/slack"
|
|
"go.uber.org/zap"
|
|
"houston/common/tag"
|
|
"houston/common/util/env"
|
|
slackUtil "houston/common/util/slack"
|
|
stringUtil "houston/common/util/string"
|
|
"houston/logger"
|
|
"strconv"
|
|
)
|
|
|
|
type ResolveIncidentRequest struct {
|
|
IncidentID uint `json:"incident_id"`
|
|
BusinessAffected []uint `json:"business_affected"`
|
|
ContributingFactors uint `json:"contributing_factors"`
|
|
AdditionalTags []uint `json:"additional_tags"`
|
|
RcaSummary string `json:"rca_summary"`
|
|
JiraLinks []string `json:"jira_links"`
|
|
IssueTypes []uint `json:"issue_types"`
|
|
Impact string `json:"impact"`
|
|
}
|
|
|
|
func ConvertSlackActionToResolveIncidentRequest(
|
|
actions map[string]slack.BlockAction,
|
|
incidentId uint,
|
|
) (*ResolveIncidentRequest, error) {
|
|
var resolveIncidentRequest ResolveIncidentRequest
|
|
|
|
resolveIncidentRequest.IncidentID = incidentId
|
|
|
|
if !env.IsQAApp() {
|
|
businessAffected, err := slackUtil.GetMultiValueArrayFromSlackOptionBlock(actions["business_affected_action_id"].SelectedOptions)
|
|
if err != nil {
|
|
logger.Error("Error while getting business affected", zap.Error(err))
|
|
}
|
|
resolveIncidentRequest.BusinessAffected = businessAffected
|
|
|
|
contributingFactor := actions["contributing_factors_action_id"].SelectedOption.Value
|
|
contributingFactorID, err := strconv.Atoi(contributingFactor)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
resolveIncidentRequest.ContributingFactors = uint(contributingFactorID)
|
|
|
|
additionalTags, err := slackUtil.GetMultiValueArrayFromSlackOptionBlock(actions["additional_tags_action_id"].SelectedOptions)
|
|
if err != nil {
|
|
logger.Error("Error while getting additional tags", zap.Error(err))
|
|
}
|
|
resolveIncidentRequest.AdditionalTags = additionalTags
|
|
} else {
|
|
issueTypes, err := slackUtil.GetMultiValueArrayFromSlackOptionBlock(actions[tag.IssueTypesActionID].SelectedOptions)
|
|
if err != nil {
|
|
logger.Error("Error while getting issue types", zap.Error(err))
|
|
}
|
|
resolveIncidentRequest.IssueTypes = issueTypes
|
|
resolveIncidentRequest.Impact = actions[tag.ImpactActionID].Value
|
|
}
|
|
|
|
resolveIncidentRequest.RcaSummary = actions["set_rca_summary"].Value
|
|
|
|
resolveIncidentRequest.JiraLinks = stringUtil.ExtractCommaSeparatedTrimmedArrayFromString(actions["set_jira_links"].Value)
|
|
|
|
return &resolveIncidentRequest, nil
|
|
}
|