From d64a744870b3152cd37d304e1a1c2e8e40c766fe Mon Sep 17 00:00:00 2001 From: Tomas Hrcka Date: May 06 2020 15:39:58 +0000 Subject: More work --- diff --git a/Dockerfile b/Dockerfile index 7ece7a0..21ad927 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ ENV PYTHONUNBUFFERED=true RUN dnf update -y && dnf clean all # Install pagure/fedmsg libraries -RUN dnf -y install python3-ogr fedora-messaging && dnf clean all +RUN dnf -y install python3-ogr fedora-messaging python3-odcs-client && dnf clean all RUN mkdir /work diff --git a/fedora-minimal-compose.py b/fedora-minimal-compose.py index 01b212b..7d41659 100755 --- a/fedora-minimal-compose.py +++ b/fedora-minimal-compose.py @@ -1,6 +1,7 @@ #!/usr/bin/python3 from fedora_messaging import api, config +from odcs.client.odcs import ODCS, AuthMech import logging # Set local logging @@ -8,11 +9,33 @@ logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) compose_threshold = 10 - def number_of_packages_in_file(file): - return sum(1 for line in open(file)) + return sum(1 for line in file) + +def save_nvr_to_file(nvr): + f = open('packages_to_compose', 'w+') + if number_of_packages_in_file(f) >= compose_threshold: + # run compose + logger.info('Running the compose') + else: + if f.readline().rstrip('\n') is nvr: + logger.info('Package already in the set for compose') + else: + logger.info('Package writen to set for compose:') + logger.info(nvr) + f.write(nvr + '\n') + + return True +def run_compose(): +#odcs = ODCS("https://odcs.stg.fedoraproject.org", +# auth_mech=AuthMech.OpenIDC, +# openidc_token="e0d6b2c3-4293-4468-8b8f-57ff42fa84c9_vUVbx6m6Rmyc8j1Ecw2QPFXi6RhM7QrT") +#source_type = "tag" +#sources = "rawhide" +#compose = odcs.new_compose(sources, source_type) + return True class Consumer(object): """ A fedora-messaging consumer that process messages @@ -23,28 +46,12 @@ class Consumer(object): Configure the consumer """ - def get_nvr(self): - """ - Get nvr from message body for build - :return: - """ - - def process(self, message: api.Message): - """ - process the package build and decide if compose is required - :param message: - :return: - """ - def __call__(self, message: api.Message): """ Invoked when a message is received by the consumer. """ logger.debug(message.topic) logger.debug(message.body) - file = 'packages_to_compose' - if number_of_packages_in_file(file) >= compose_threshold: - # run compose - print(message.body['build']['nvr']) - else: - file.write(message.body['build']['nvr'] + "\n") + package = message.body['build']['nvr'] + save_nvr_to_file(package) + run_compose() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 1c8f48d..7cc2330 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ requests==2.21.0 -fedora_messaging>=1.7.1 \ No newline at end of file +fedora_messaging>=1.7.1 +odcs \ No newline at end of file diff --git a/test_fmc.py b/test_fmc.py new file mode 100644 index 0000000..5631605 --- /dev/null +++ b/test_fmc.py @@ -0,0 +1,16 @@ +import copy +import json +import logging + +import pytest +import fedora_messaging.api +import fedora_messaging.config + +def test_message_process(mocker, caplog): + assert True + +def test_nvr_save(mocker, caplog): + assert True + +def test_compose_treshold(mocker, caplog): + assert True \ No newline at end of file