mirror of
https://github.com/rocky-linux/ansible-role-kojihub.git
synced 2024-12-22 08:38:32 +00:00
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
This commit is contained in:
parent
d47474616f
commit
393c7bef11
@ -40,5 +40,3 @@ There are numerous other options within the [defaults/main.yml](./defaults/main.
|
||||
|
||||
## Changelog
|
||||
The [changelog](./CHANGELOG.md) is stored externally
|
||||
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
# Koji callback sent to Rocky Linux mqtt
|
||||
#
|
||||
# Koji callback sent to Rocky Linux mqtt
|
||||
#
|
||||
# Adapted from https://gitlab.cern.ch/linuxsupport/rpms/koji-hub-plugins-cern/blob/master/src/mash.py
|
||||
#
|
||||
# License: GPLv2
|
||||
# Authors:
|
||||
# Alex (dot) Iribarren (at) cern (dot) ch (original script)
|
||||
#
|
||||
# License: GPLv2
|
||||
# Authors:
|
||||
# Alex (dot) Iribarren (at) cern (dot) ch (original script)
|
||||
# Thomas (dot) Oulevey (at) cern (dot) ch (mqtt version)
|
||||
|
||||
|
||||
import koji
|
||||
from koji import PluginError
|
||||
from koji.context import context
|
||||
@ -16,25 +16,25 @@ import ConfigParser
|
||||
import logging
|
||||
import base64, json
|
||||
import os
|
||||
|
||||
|
||||
# mqtt client
|
||||
import paho.mqtt.client as mqtt
|
||||
|
||||
|
||||
CONFIG_FILE = '/etc/koji-hub/plugins/rockymsg.conf'
|
||||
PLUGIN_NAME = 'koji.plugin.rockymsg'
|
||||
DEFAULT_ARCHES = 'x86_64'
|
||||
|
||||
|
||||
config = None
|
||||
tagCache = {}
|
||||
|
||||
|
||||
def get_config():
|
||||
global config
|
||||
if config:
|
||||
return config
|
||||
|
||||
|
||||
config = ConfigParser.SafeConfigParser()
|
||||
config.read(CONFIG_FILE)
|
||||
|
||||
|
||||
if not config.has_section('rockymsg'):
|
||||
config.add_section('rockymsg')
|
||||
if not config.has_option('rockymsg', 'host'):
|
||||
@ -61,33 +61,33 @@ def get_config():
|
||||
config.set('rockymsg' 'tls_version', '2')
|
||||
if not config.has_option('rockymsg', 'exclude_tags'):
|
||||
config.set('rockymsg', 'exclude_tags', '')
|
||||
|
||||
|
||||
return config
|
||||
|
||||
|
||||
def mqtt_on_publish(client,userdata,result):
|
||||
pass
|
||||
pass
|
||||
|
||||
def _dispatch_on_topic(payload):
|
||||
logger = logging.getLogger(PLUGIN_NAME)
|
||||
|
||||
|
||||
config = get_config()
|
||||
if not config:
|
||||
raise PluginError('Unable to use the bus, config not found')
|
||||
|
||||
|
||||
if not payload['tag']:
|
||||
logger.info('No tag specified')
|
||||
return None
|
||||
|
||||
|
||||
exclude_tags = config.get('rockymsg', 'exclude_tags')
|
||||
if exclude_tags:
|
||||
exclude_tags = [x.strip() for x in exclude_tags.split(',')]
|
||||
else:
|
||||
exclude_tags = []
|
||||
|
||||
|
||||
if payload['tag'] in exclude_tags:
|
||||
logger.info('Tag %s excluded' % payload['tag'])
|
||||
return None
|
||||
|
||||
|
||||
mqtt_host = config.get('rockymsg', 'host')
|
||||
mqtt_port = config.get('rockymsg', 'port')
|
||||
mqtt_topic = config.get('rockymsg', 'topic')
|
||||
@ -96,30 +96,30 @@ def _dispatch_on_topic(payload):
|
||||
mqtt_tls_key = config.get('rockymsg', 'tls_key')
|
||||
mqtt_tls_insecure = config.get('rockymsg', 'tls_insecure')
|
||||
mqtt_tls_version = config.get('rockymsg', 'tls_version')
|
||||
|
||||
|
||||
# Connect to the bus
|
||||
try:
|
||||
client = mqtt.Client()
|
||||
except Exception as e:
|
||||
logger.error('mqtt client error: %s' % e.message)
|
||||
logger.error('mqtt client error: %s' % e.message)
|
||||
client.tls_set(ca_certs=mqtt_cacert, certfile=mqtt_tls_cert, keyfile=mqtt_tls_key, tls_version=2)
|
||||
|
||||
|
||||
client.tls_insecure_set('False')
|
||||
try:
|
||||
client.on_publish = mqtt_on_publish
|
||||
client.connect(mqtt_host,mqtt_port)
|
||||
except Exception as e:
|
||||
logger.error('mqtt connection error: %s' % e.message)
|
||||
|
||||
|
||||
# Publish payload to the bus
|
||||
#
|
||||
ret = client.publish(mqtt_topic, json.dumps(payload))
|
||||
|
||||
|
||||
# Disconnect from the bus
|
||||
client.disconnect()
|
||||
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def _get_build_target(task_id):
|
||||
try:
|
||||
task = kojihub.Task(task_id)
|
||||
@ -135,27 +135,27 @@ def _get_build_target(task_id):
|
||||
return kojihub.get_build_target(request[2])
|
||||
except Exception as e:
|
||||
logger.error('Exception: %s', e)
|
||||
|
||||
|
||||
return None
|
||||
|
||||
|
||||
|
||||
|
||||
@callback('postTag', 'postUntag')
|
||||
#@ignore_error
|
||||
def rockymsg(cbtype, *args, **kws):
|
||||
logger = logging.getLogger(PLUGIN_NAME)
|
||||
logger.debug('Called the %s callback, args: %s; kws: %s', cbtype, str(args), str(kws))
|
||||
|
||||
|
||||
tag = kws['tag']['name']
|
||||
build_task_id = kws['build']['task_id']
|
||||
|
||||
|
||||
build_target = _get_build_target(build_task_id)
|
||||
logger.debug('Build target: %s', build_target)
|
||||
|
||||
|
||||
arches = DEFAULT_ARCHES
|
||||
if build_target:
|
||||
build_tag = kojihub.get_tag(build_target['build_tag_name'])
|
||||
arches = build_tag['arches']
|
||||
|
||||
|
||||
payload = { 'action': cbtype, 'tag': tag, 'arches': arches }
|
||||
job = _dispatch_on_topic(payload)
|
||||
if job:
|
||||
|
@ -48,4 +48,3 @@ Alias /kojifiles "{{ koji_mount }}/"
|
||||
GssapiCredStore keytab:/etc/koji.keytab
|
||||
Require valid-user
|
||||
</Location>
|
||||
|
||||
|
@ -5,7 +5,7 @@ Alias /koji "/usr/share/koji-web/scripts/wsgi_publisher.py"
|
||||
RewriteEngine on
|
||||
RewriteCond %{HTTPS} off
|
||||
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]
|
||||
RewriteRule ^/$ /koji [R,L]
|
||||
RewriteRule ^/$ /koji [R,L]
|
||||
|
||||
Header always set X-Frame-Options "SAMEORIGIN"
|
||||
Header always set X-Xss-Protection "1; mode=block"
|
||||
@ -69,4 +69,3 @@ Alias /repos {{ koji_mount }}/repos
|
||||
Require all granted
|
||||
</IfVersion>
|
||||
</Directory>
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
---
|
||||
# vars file - Nothing should really go here but dynamic imports
|
||||
# and truely static items
|
||||
# and truely static items
|
||||
|
Loading…
Reference in New Issue
Block a user