Skip to content
Snippets Groups Projects
Commit ffc14076 authored by jurgenhaas's avatar jurgenhaas
Browse files

customer/bitegra/mobimo/drupal#240 Optimize GitLab issue creation

parent 34f3c11a
Branches
No related tags found
No related merge requests found
import json
import logging
import requests
import urllib.parse
from alerta.plugins import PluginBase, app
LOG = logging.getLogger('alerta.plugins.gitlab')
LOG = logging.getLogger('alerta.plugins')
ALERTA_URL = 'https://{{ alerta_domain }}'
GITLAB_URL = '{{ gitlab_issue.url }}/api/v4'
......@@ -30,10 +31,10 @@ class GitlabIssue(PluginBase):
"""should return internal id of external system"""
namespace = 'ansible-inventories/hosts/{}'.format(alert.environment)
BASE_URL = '{}/projects'.format(GITLAB_URL)
base_url = '{}/projects'.format(GITLAB_URL)
origin = alert.origin.split('/').pop()
url = BASE_URL + '?search={}'.format(origin)
url = base_url + '?search={}'.format(origin)
r = requests.get(url, headers=self.headers)
pid = False
for p in r.json():
......@@ -41,18 +42,26 @@ class GitlabIssue(PluginBase):
pid = p.get('id', None)
break
LOG.info('Create GitLab issue for %s / %s / %s' % (alert.environment, origin, pid))
if pid:
BASE_URL = '{}/{}'.format(BASE_URL, pid)
project_url = '{}/{}'.format(base_url, pid)
if action == 'createIssue':
if 'issue_iid' not in alert.attributes:
# noinspection PyBroadException
try:
raw_data = json.dumps(alert.raw_data, indent=2, sort_keys=True)
except Exception as e:
LOG.info('Exception %s' % str(e))
raw_data = alert.raw_data
query = urllib.parse.urlencode({
'title': alert.text,
'description': '{}/#/alert/{}'.format(ALERTA_URL, alert.id)
'title': alert.text[0:128],
'description': '{}/alert/{}\n\nService: {}\n\nOrigin: {}\n\n```\n{}\n```\n'.format(ALERTA_URL, alert.id, alert.service, alert.origin, raw_data)
})
url = '{}/issues?{}'.format(BASE_URL, query)
url = '{}/issues?{}'.format(project_url, query)
#LOG.info('Post to %s' % url)
r = requests.post(url, headers=self.headers)
#LOG.info('Response %s' % r.headers)
alert.attributes['issue_iid'] = r.json().get('iid', None)
alert.attributes['gitlabUrl'] = '<a href="{}" target="_blank">Issue #{}</a>'.format(
r.json().get('web_url', None),
......
from setuptools import find_packages, setup
version = '1.0.2'
version = '1.1.0'
setup(
name='alerta-gitlab',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment