From 2fdb647b4f20eba1655c41142781fad07d413328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Danis?= <frederic.danis@collabora.com> Date: Thu, 11 Feb 2021 17:59:56 +0100 Subject: [PATCH] FOSSology: Re-use previous results from same group id License scan for `pkg/dash` and `tests\dash` should not re-use the scan results from a previous scan of the other project. Separate license scan using different group id, which is done using different users. --- .../overlay/usr/bin/ci-license-scan | 5 +++-- .../overlay/usr/bin/fossology.py | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/package-source-builder/overlay/usr/bin/ci-license-scan b/package-source-builder/overlay/usr/bin/ci-license-scan index eb19064..818e6fb 100755 --- a/package-source-builder/overlay/usr/bin/ci-license-scan +++ b/package-source-builder/overlay/usr/bin/ci-license-scan @@ -363,8 +363,9 @@ def main(): name = name[:-len(suffix)] foss_project = fossology.ApertisFossology(args.fossology_host, args.fossology_username, args.fossology_password) foss_project.upload(args.source_url, args.source_branch, name) - reuse_id, reuse_group = foss_project.get_previous_upload_analysis_ids(name) - foss_project.analyse(reuse_id, reuse_group) + group_id = foss_project.get_group_id() + reuse_id = foss_project.get_previous_upload_analysis_id(name, group_id) + foss_project.analyse(reuse_id, group_id) report = foss_project.get_report('dep5') print(report, file=f) # open for parsing as binary since copyrights may (incorrectly) contain binary data diff --git a/package-source-builder/overlay/usr/bin/fossology.py b/package-source-builder/overlay/usr/bin/fossology.py index 30ec54b..eed3523 100755 --- a/package-source-builder/overlay/usr/bin/fossology.py +++ b/package-source-builder/overlay/usr/bin/fossology.py @@ -44,7 +44,13 @@ class ApertisFossology: print_err(".", end = '', flush = True) time.sleep(1) - def get_previous_upload_analysis_ids(self, name): + def get_group_id(self): + resp = self.session.get(f"{self.server}/jobs?upload={self.upload_id}") + if resp.status_code != 200: + raise Exception('GET /jobs?upload={} {}'.format(self.upload_id, resp.status_code)) + return resp.json()[-1]["groupId"] + + def get_previous_upload_analysis_id(self, name, group_id): last_deleted_upload_id = 0 resp = self.session.get(f"{self.server}/jobs") if resp.status_code != 200: @@ -54,11 +60,12 @@ class ApertisFossology: if job["name"] == "Delete": last_deleted_upload_id = job["uploadId"] elif (job["name"] == name and + job["groupId"] == group_id and job["uploadId"] != self.upload_id and job["uploadId"] != last_deleted_upload_id): - return job["uploadId"], job["groupId"] + return job["uploadId"] - return 0, 0 + return 0 def upload(self, url, branch, name): print_err("Uploading {} branch {}".format(url, branch)) @@ -183,9 +190,11 @@ if __name__ == "__main__": project.upload(source_url, source_branch, name) - reuse_id, reuse_group = project.get_previous_upload_analysis_ids(name) + group_id = project.get_group_id() + + reuse_id = project.get_previous_upload_analysis_id(name, group_id) - project.analyse(reuse_id, reuse_group) + project.analyse(reuse_id, group_id) report = project.get_report('dep5') print(report) -- GitLab