From: "Brian Dolbec" <dolsen@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gentoo-keys:gsoc-2016 commit in: gkeys/gkeys/
Date: Sat, 24 Dec 2016 09:41:17 +0000 (UTC) [thread overview]
Message-ID: <1482572427.b9e64a989cbb143c63de7dc18cff2bec32ddcdd2.dolsen@gentoo> (raw)
commit: b9e64a989cbb143c63de7dc18cff2bec32ddcdd2
Author: aeroniero33 <justthisthing <AT> gmail <DOT> com>
AuthorDate: Fri Jun 17 17:40:01 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Dec 24 09:40:27 2016 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=b9e64a98
gkeys actions: Added automatic seeds,keys update capability
Add more detailed update reporting including the keys removed,
revoked/changed, added.
<rebase edit>
Convert print() to proper self.output()
Whitespace cleanup
Commit message improvements
</edit Brian Dolbec>
gkeys/gkeys/actions.py | 20 +++++++-------
gkeys/gkeys/base.py | 68 +++++++++++++++++++++++++++++++++++++++++++++-
gkeys/gkeys/seedhandler.py | 9 +++++-
3 files changed, 85 insertions(+), 12 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index c06cd47..bb71496 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -133,19 +133,19 @@ class Actions(ActionBase):
self.output('', "Update succeeded.\n")
messages = fetch_messages + [" Update operation:"] + [install_messages]
success, new_gkeys = self.listseed(args)
- added_gkeys, changed_gkeys = self.seedhandler.compare_seeds(old_gkeys, new_gkeys)
- self.output('', "Updated revoked GKeys:")
- if changed_gkeys:
- for gkey in changed_gkeys:
- self.output(['', changed_gkeys])
+ added_gkeys, changed_gkeys, removed_gkeys = self.seedhandler.compare_seeds(old_gkeys, new_gkeys)
+ for gkey in changed_gkeys:
+ self.output([changed_gkeys], "Updated or revoked GKeys:")
else:
- self.output('', "No GKeys were revoked")
- self.output('', "Added GKeys:")
- if added_gkeys:
- for gkey in added_gkeys:
- self.output(['', added_gkeys])
+ self.output('', "No GKeys were updated or revoked")
+ for gkey in added_gkeys:
+ self.output([added_gkeys], "Added GKeys:")
else:
self.output('', "No GKeys were added")
+ for gkey in removed_gkeys:
+ self.output([removed_gkeys], "Removed GKeys:")
+ else:
+ self.output('', "No GKeys were removed")
return (success, messages)
def addseed(self, args):
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index a0224c0..28dd0b2 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -17,10 +17,20 @@ from __future__ import print_function
import argparse
import os
import sys
+import copy
from gkeys.fileops import ensure_dirs
from gkeys.log import log_levels, set_logger
+from gkeys.gkey import GKEY
+if sys.version_info[0] >= 3:
+ from urllib.request import urlopen
+ py_input = input
+ _unicode = str
+else:
+ from urllib2 import urlopen
+ py_input = raw_input
+ _unicode = unicode
if sys.version_info[0] >= 3:
unicode = str
@@ -291,6 +301,10 @@ class CliBase(object):
for opt in options:
getattr(self, '_option_%s' % opt)(parser)
+ def warning_output(self, info):
+ ''' We don't want this message to be spammed 4 times everytime gkeys is run'''
+ if "Re-fetch cycle timeout of" not in info:
+ print(info)
def setup(self, args, configs):
'''Set up the args and configs passed in
@@ -352,7 +366,59 @@ class CliBase(object):
'''
# establish our actions instance
self.actions = self.cli_config['Actions'](self.config, self.output_results, self.logger)
-
+ # check for seed update
+ from sslfetch.connections import Connector
+ connector_output = {
+ 'info': self.logger.info,
+ 'debug': self.logger.debug,
+ 'error': self.logger.error,
+ 'exception': self.logger.exception,
+ 'warning': self.warning_output,
+ 'kwargs-info': {},
+ 'kwargs-debug': {},
+ 'kwargs-error': {},
+ 'kwargs-exception': {},
+ 'kwargs-warning': {},
+ }
+ fetcher = Connector(connector_output, None, "Gentoo Keys")
+ successes = []
+ up_to_date = True
+ categories = list(self.config.defaults['seeds'])
+ '''Attemp to download seed and seed.sig files for each available category'''
+ for category in categories:
+ filepath = self.config.defaults['seedsdir'] + "/" + category + ".seeds"
+ timestamp_path = filepath + ".timestamp"
+ url = self.config.defaults['seedurls'][category]
+ success, signedfile, timestamp = fetcher.fetch_file(
+ url, filepath, timestamp_path)
+ if timestamp != "":
+ up_to_date = False
+ successes.append(success)
+ url += ".sig"
+ filepath += ".sig"
+ success, signedfile, timestamp = fetcher.fetch_file(
+ url, filepath, timestamp_path)
+ if timestamp != "":
+ up_to_date = False
+ successes.append(success)
+ if False not in successes and not up_to_date:
+ print("Seeds need to be updated")
+ ack = None
+ while ack not in ("y", "yes", "n", "no"):
+ ack = py_input("Would you like to update the seeds now? (y/n) ").lower()
+ if ack in ("y", "yes"):
+ custom_args = copy.copy(args)
+ for attr in GKEY._fields:
+ if attr != "debug":
+ custom_args.attr = None
+ custom_args.category = None
+ custom_args.action = "update-seed"
+ print("Updating seeds")
+ self.run(custom_args)
+ elif False not in successes:
+ print("Seeds are up to date")
+ else:
+ print("Seed update check failed, check your internet connection.")
# run the action
func = getattr(self.actions, '%s'
% self.cli_config['Action_Map'][args.action]['func'])
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index c7dad2e..90ce583 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -78,21 +78,28 @@ class SeedHandler(object):
@param seeds2: set of seeds to be compared
@return added_gkeys: list of keys that are included in seed2 but not seed1
@return changed_gkeys: list of keys that are included in seed1 and seed2 but have been altered
+ @return removed_gkeys: list of keys that are included in seed1 but not in seed2
'''
old_gkeys = seeds1[1]
new_gkeys = seeds2[1]
changed_gkeys = []
+ old_changed_gkeys = []
+ removed_gkeys = []
added_gkeys = []
if old_gkeys:
for new_gkey in new_gkeys:
for old_gkey in old_gkeys:
if new_gkey.nick == old_gkey.nick and new_gkey != old_gkey:
changed_gkeys.append(new_gkey)
+ old_changed_gkeys.append(old_gkey)
if new_gkey not in old_gkeys and new_gkey not in changed_gkeys:
added_gkeys.append(new_gkey)
+ for old_gkey in old_gkeys:
+ if old_gkey not in new_gkeys and old_gkey not in old_changed_gkeys:
+ removed_gkeys.append(old_gkey)
else:
added_gkeys = new_gkeys
- return(added_gkeys, changed_gkeys)
+ return(added_gkeys, changed_gkeys, removed_gkeys)
def load_seeds(self, seedfile=None, filepath=None, refresh=False):
'''Load seed file
next reply other threads:[~2016-12-24 9:41 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-24 9:41 Brian Dolbec [this message]
-- strict thread matches above, loose matches on Subject: below --
2016-12-24 9:41 [gentoo-commits] proj/gentoo-keys:gsoc-2016 commit in: gkeys/gkeys/ Brian Dolbec
2016-12-24 9:41 Brian Dolbec
2016-12-24 9:41 Brian Dolbec
2016-12-24 9:41 Brian Dolbec
2016-12-24 9:41 Brian Dolbec
2016-12-24 9:41 Brian Dolbec
2016-12-24 9:41 Brian Dolbec
2016-12-24 9:41 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 9:13 Brian Dolbec
2016-12-24 4:52 [gentoo-commits] proj/gentoo-keys:master " Brian Dolbec
2016-12-24 9:13 ` [gentoo-commits] proj/gentoo-keys:gsoc-2016 " Brian Dolbec
2016-12-23 8:37 Brian Dolbec
2016-12-23 8:37 Brian Dolbec
2016-12-23 8:37 Brian Dolbec
2016-12-23 8:37 Brian Dolbec
2016-12-23 8:37 Brian Dolbec
2016-12-23 8:37 Brian Dolbec
2016-12-23 8:37 Brian Dolbec
2016-12-23 8:37 Brian Dolbec
2016-12-23 8:37 Brian Dolbec
2016-12-23 8:37 Brian Dolbec
2016-12-23 8:37 Brian Dolbec
2016-12-23 8:37 Brian Dolbec
2016-12-23 8:37 Brian Dolbec
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1482572427.b9e64a989cbb143c63de7dc18cff2bec32ddcdd2.dolsen@gentoo \
--to=dolsen@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox