From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 5386A138334 for ; Wed, 15 Aug 2018 16:15:07 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 3C563E0A53; Wed, 15 Aug 2018 16:15:06 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 03AFCE0A53 for ; Wed, 15 Aug 2018 16:15:05 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id CCC4D335CEA for ; Wed, 15 Aug 2018 16:15:02 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id AC7A4394 for ; Wed, 15 Aug 2018 16:15:00 +0000 (UTC) From: "Brian Dolbec" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Brian Dolbec" Message-ID: <1534349633.ac6e01e5646d5f6fdd14d65f43a785368e1d8b80.dolsen@gentoo> Subject: [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/ X-VCS-Repository: proj/gentoo-keys X-VCS-Files: gkeys/gkeys/actions.py X-VCS-Directories: gkeys/gkeys/ X-VCS-Committer: dolsen X-VCS-Committer-Name: Brian Dolbec X-VCS-Revision: ac6e01e5646d5f6fdd14d65f43a785368e1d8b80 X-VCS-Branch: master Date: Wed, 15 Aug 2018 16:15:00 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: b1375cff-0d5d-4b40-aead-b04c0519cbb4 X-Archives-Hash: fabf77036f61c9669c12c4c1289e1da9 commit: ac6e01e5646d5f6fdd14d65f43a785368e1d8b80 Author: Brian Dolbec dolsen gentoo org> AuthorDate: Wed Aug 15 16:00:32 2018 +0000 Commit: Brian Dolbec gentoo org> CommitDate: Wed Aug 15 16:13:53 2018 +0000 URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=ac6e01e5 gkeys actions.py: Add unique devs pass/fail tracking to spec-check This adds numbers tracking to identify which devs have passing keys and which have only failing keys. gkeys/gkeys/actions.py | 54 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py index 539ff26..78faa9a 100644 --- a/gkeys/gkeys/actions.py +++ b/gkeys/gkeys/actions.py @@ -452,6 +452,8 @@ class Actions(ActionBase): catdir, keyresults = self.keyhandler.determine_keys(args) self.logger.debug(_unicode("ACTIONS: speccheck; catdir = %s") % catdir) results = {} + unique_pass = {} + unique_fail = {} failed = defaultdict(list) self.output('', '\n Checking keys...') '''Login email''' @@ -552,9 +554,20 @@ class Actions(ActionBase): pub_pass['final'] = False break if pub_pass['final']: + if gkey.name in unique_fail: + unique_fail.pop(gkey.name) + if gkey.name not in unique_pass: + unique_pass[gkey.name] = [] + if spec not in unique_pass[gkey.name]: + unique_pass[gkey.name].append(spec) if spec not in failed['spec-approved']: failed['spec-approved'].append(spec) else: + if gkey.name not in unique_pass: + if gkey.name not in unique_fail: + unique_fail[gkey.name] = [] + if spec not in unique_fail[gkey.name]: + unique_fail[gkey.name].append(spec) if spec not in failed['spec']: failed['spec'].append(spec) sdata = convert_pf(pub_pass, ['pub', 'sign', 'final']) @@ -601,21 +614,38 @@ class Actions(ActionBase): self.output([sorted(set(failed['spec']))], '\n Failed to pass SPEC requirements:') if failed['spec-approved']: self.output([sorted(set(failed['spec-approved']))], '\n SPEC Approved:') + fkeys = [] + pkeys = [] + if unique_fail: + fkeys = sorted(unique_fail) + failed['unique-fail'] = [] + for k in fkeys: + failed['unique-fail'].extend(unique_fail[k]) + self.output([failed['unique-fail']], '\n Unique SPEC Failed by name:') + if unique_pass: + pkeys = sorted(unique_pass) + #failed['unique-pass'] = [] + #for k in pkeys: + # failed['unique-pass'].extend(unique_pass[k]) + #self.output([failed['unique-pass']], '\n Unique SPEC Passed:') + return (len(failed) <1, ['\nFound Failures:\n-------', - 'Revoked................: %d' % len(set(failed['revoked'])), - 'Invalid................: %d' % len(set(failed['invalid'])), - 'No Signing subkey......: %d' % len(set(failed['sign'])), - 'No Encryption subkey...: %d' % len(set(failed['encrypt'])), - 'Algorithm..............: %d' % len(set(failed['algo'])), - 'Bit length.............: %d' % len(set(failed['bits'])), - 'Qualified IDs..........: %d' % len(set(failed['qualified_id'])), - 'Expiry.................: %d' % len(set(failed['expired'])), - 'Expiry Warnings........: %d' % len(set(failed['warn'])), - 'SPEC requirements......: %d' % len(set(failed['spec'])), - '=============================', - 'SPEC Approved..........: %d' % len(set(failed['spec-approved'])), + 'Revoked..................: %d' % len(set(failed['revoked'])), + 'Invalid..................: %d' % len(set(failed['invalid'])), + 'No Signing subkey........: %d' % len(set(failed['sign'])), + 'No Encryption subkey.....: %d' % len(set(failed['encrypt'])), + 'Algorithm................: %d' % len(set(failed['algo'])), + 'Bit length...............: %d' % len(set(failed['bits'])), + 'Qualified IDs............: %d' % len(set(failed['qualified_id'])), + 'Expiry...................: %d' % len(set(failed['expired'])), + 'Expiry Warnings..........: %d' % len(set(failed['warn'])), + 'SPEC requirements........: %d' % len(set(failed['spec'])), + 'SPEC Approved............: %d' % len(set(failed['spec-approved'])), + '===============================', + 'Unique approved by name..: %d' % len(pkeys), + 'Unique failed by name....: %d' % len(fkeys), ]) def removekey(self, args):