Skip to content

Commit

Permalink
refactor: vulnerability_sla_breach workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
danielgrittner committed Oct 24, 2024
1 parent ce4f7b8 commit 158f27d
Showing 1 changed file with 32 additions and 62 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
from typing import Annotated
from admyral.workflow import workflow, Schedule
from admyral.typings import JsonValue
from admyral.action import action, ArgumentMetadata
from admyral.actions import (
search_jira_issues,
batched_send_slack_message_to_user_by_email,
send_slack_message,
send_list_elements_to_workflow,
)


Expand All @@ -18,43 +17,19 @@
"""


@action(
display_name="Transform Jira Issues to Slack",
display_namespace="Jira",
description="Transform Jira Issues to Slack",
@workflow(
description="Monitoring of vulnerability SLA breaches - alerting out of SLA vulnerabilities",
)
def transform_jira_to_slack(
jira_tickets: Annotated[
JsonValue,
ArgumentMetadata(
display_name="Jira tickets", description="Result of Jira Ticket Search"
),
],
message_input: Annotated[
str,
ArgumentMetadata(
display_name="Message Input",
description="Describe the type of message that should be displayed. E.g., Recent SLA breach",
),
],
):
result = []
for jira_ticket in jira_tickets:
key = jira_ticket["key"]
title = jira_ticket["fields"]["summary"]
creator = jira_ticket["fields"]["creator"]["displayName"]
status = jira_ticket["fields"]["status"]["name"]
created = jira_ticket["fields"]["created"]

result.append(
(
"[email protected]",
f"{message_input}: [{key}] {title} \nCreated by: {creator} \nStatus: {status} \nCreated on: {created}",
None,
)
)

return result
def alert_vulnerability_sla_breach_in_slack(payload: dict[str, JsonValue]):
send_slack_message(
channel_id="C06QP0KV1L2", # TODO: Change to your desired channel
text=f"{payload["shared"]["header"]}\n[{payload["element"]["key"]}] {payload["element"]["fields"]["summary"]}\n"
f"Created by: {payload["element"]["fields"]["creator"]["displayName"]}\n"
f"Status: {payload["element"]["fields"]["status"]["name"]}\n"
f"Created on: {payload["element"]["fields"]["created"]}\n"
f"Link: https://admyral.atlassian.net/browse/{payload["element"]["key"]}", # TODO: adapt your Jira URL
secrets={"SLACK_SECRET": "slack_secret"},
)


@workflow(
Expand All @@ -68,14 +43,12 @@ def vulnerability_sla_breach(payload: dict[str, JsonValue]):
limit=1000,
secrets={"JIRA_SECRET": "jira_secret"},
)

transformed_no_change = transform_jira_to_slack(
jira_tickets=no_change_last_7_days,
message_input="🚨 No progress in the last 7 days 🚨",
)

batched_send_slack_message_to_user_by_email(
messages=transformed_no_change, secrets={"SLACK_SECRET": "slack_secret"}
send_list_elements_to_workflow(
workflow_name="alert_vulnerability_sla_breach_in_slack",
elements=no_change_last_7_days,
shared_data={
"header": "🚨 No progress in the last 7 days 🚨",
},
)

# filter for jira tickets whose SLA is about to be breached (10 days left)
Expand All @@ -84,14 +57,12 @@ def vulnerability_sla_breach(payload: dict[str, JsonValue]):
limit=1000,
secrets={"JIRA_SECRET": "jira_secret"},
)

transformed_soon_breached = transform_jira_to_slack(
jira_tickets=soon_breached_slas,
message_input="🚨 About to be breached SLAs in 10 days 🚨",
)

batched_send_slack_message_to_user_by_email(
messages=transformed_soon_breached, secrets={"SLACK_SECRET": "slack_secret"}
send_list_elements_to_workflow(
workflow_name="alert_vulnerability_sla_breach_in_slack",
elements=soon_breached_slas,
shared_data={
"header": "🚨 About to be breached SLAs in 10 days 🚨",
},
)

# filter for jira tickets that just breached SLA
Expand All @@ -100,11 +71,10 @@ def vulnerability_sla_breach(payload: dict[str, JsonValue]):
limit=1000,
secrets={"JIRA_SECRET": "jira_secret"},
)

transformed_breached = transform_jira_to_slack(
jira_tickets=breached_slas, message_input="🚨 Just breached SLAs 🚨"
)

batched_send_slack_message_to_user_by_email(
messages=transformed_breached, secrets={"SLACK_SECRET": "slack_secret"}
send_list_elements_to_workflow(
workflow_name="alert_vulnerability_sla_breach_in_slack",
elements=breached_slas,
shared_data={
"header": "🚨 Just breached SLAs 🚨",
},
)

0 comments on commit 158f27d

Please sign in to comment.