Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Automate incidents creation
Add a subscription module `create_incidents.py` to
create incidents automatically when builds and tests
objects match with issue patterns.

Signed-off-by: Jeny Sadadia <jeny.sadadia@collabora.com>
  • Loading branch information
Jeny Sadadia committed Oct 17, 2024
commit 5064d377625b2bcc27df80285dae43ecb226d77a
42 changes: 42 additions & 0 deletions kcidb/monitor/subscriptions/create_incidents.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
"""Automate incident creation"""
import os
import kcidb
from kcidb.tools import kcidb_match

CLIENT = None


# pylint: disable=global-statement
def get_client():
"""Get KCIDB client instance and set it as a global variable"""
global CLIENT
if not CLIENT:
project_id = os.environ.get('GCP_PROJECT')
topic_name = os.environ.get('KCIDB_LOAD_QUEUE_TOPIC')
if project_id and topic_name:
CLIENT = kcidb.Client(project_id=project_id, topic_name=topic_name)
return CLIENT


def match_test(test):
"""Generate incident for matching test"""
client = get_client()
if client:
incident_generator = kcidb_match.IncidentGenerator()
incidents = incident_generator.generate_incidents_from_test(test)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Considering that IncidentGenerator encapsulates a database client connection, why not create and get it similarly to get_client(), instead of creating a new one for every object matched?

client.submit(incidents)


def match_build(build):
"""Generate incident for matching build"""
client = get_client()
if client:
incident_generator = kcidb_match.IncidentGenerator()
incidents = incident_generator.generate_incidents_from_build(build)
client.submit(incidents)


def match_issue(issue):
"""Match issue and add its pattern to DB"""
incident_generator = kcidb_match.IncidentGenerator()
incident_generator.db.update_patterns(issue)