From 0d0abbebaa19ccb5e7e2b6bfcbd1a074664dadde Mon Sep 17 00:00:00 2001 From: Qixiang Wan Date: Feb 23 2018 08:31:39 +0000 Subject: [PATCH 1/2] Ignore built module for metadata change event When module's metadata changed, and module with that revision has been built in MBS already, we just ignore this. --- diff --git a/freshmaker/mbs.py b/freshmaker/mbs.py index b58a76d..ccb74ee 100644 --- a/freshmaker/mbs.py +++ b/freshmaker/mbs.py @@ -64,6 +64,12 @@ class MBS(object): resp = requests.request("POST", url, headers=headers, json=body) data = resp.json() + if data['status'] == 409: + # MBS HTTP 409 Conflict - The submitted module's NVR already exists. + # if module has been built already, we should just ignore it + log.info("Module (%s) is already exists in MBS", scm_url) + return None + if 'id' in data: log.info("Triggered build of %s, MBS build_id=%s", scm_url, data['id']) return data['id'] From 761ca3c47570b6e9d09892d87f4116f1c27c4dab Mon Sep 17 00:00:00 2001 From: Qixiang Wan Date: Feb 23 2018 08:31:39 +0000 Subject: [PATCH 2/2] Generate GitModuleMetadataChangeEvent only when metadata changed FIXES: #221 --- diff --git a/freshmaker/parsers/git/receive.py b/freshmaker/parsers/git/receive.py index 7e358be..0eb2951 100644 --- a/freshmaker/parsers/git/receive.py +++ b/freshmaker/parsers/git/receive.py @@ -64,9 +64,12 @@ class GitReceiveParser(BaseParser): log.debug(namespace) if namespace == "modules": - log.debug("Parsed GitModuleMetadataChangeEvent fedmsg, repo=%s, " - "branch=%s, rev=%s", repo, branch, rev) - return GitModuleMetadataChangeEvent(msg_id, repo, branch, rev) + changed_files = commit.get('stats', {}).get('files', {}).keys() + metadata_changed = '%s.yaml' % repo in changed_files + if metadata_changed: + log.debug("Parsed GitModuleMetadataChangeEvent fedmsg, repo=%s, " + "branch=%s, rev=%s", repo, branch, rev) + return GitModuleMetadataChangeEvent(msg_id, repo, branch, rev) elif namespace == 'container': changed_files = msg['msg']['commit']['stats']['files']