commit: 3a59f3c4f95e5136d03805049c9af638de96dde4 Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> AuthorDate: Sun Dec 28 17:03:35 2014 +0000 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> CommitDate: Tue Dec 30 21:42:26 2014 +0000 URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=3a59f3c4
gkeys: Add UpdateDbError exception usage --- gkeys/gkeys/actions.py | 2 +- gkeys/gkeys/lib.py | 6 +++--- gkeys/gkeys/seed.py | 7 ++++++- gkeys/gkeys/seedhandler.py | 11 ++++++++--- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py index 0dbdf24..2a68739 100644 --- a/gkeys/gkeys/actions.py +++ b/gkeys/gkeys/actions.py @@ -858,7 +858,7 @@ class Actions(object): return (False, ["Please specify seeds type."]) self.logger.debug("ACTIONS: refreshkey; args: %s" % str(args)) handler = SeedHandler(self.logger, self.config) - seeds = handler.load_category(args.category) + seeds = handler.load_category(args.category, refresh=True) keyring = self.config.get_key('keyring') catdir = os.path.join(keyring, args.category) self.logger.debug("ACTIONS: refreshkey; catdir = %s" % catdir) diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py index f8e6615..724abfc 100644 --- a/gkeys/gkeys/lib.py +++ b/gkeys/gkeys/lib.py @@ -189,7 +189,7 @@ class GkeysGPG(GPG): self.set_keyserver() self.set_keydir(gkey.keydir, 'refresh-keys', reset=True) self.set_keyring('pubring.gpg', 'refresh-keys', reset=False) - self.set_keyseedfile() + self.set_keyseedfile(refresh=True) logger.debug("LIB: refresh_key, gkey: %s" % str(gkey)) logger.debug("** Calling runGPG with Running 'gpg %s --refresh-keys' for: %s" % (' '.join(self.config.get_key('tasks', 'refresh-keys')), str(gkey))) @@ -325,11 +325,11 @@ class GkeysGPG(GPG): return results - def set_keyseedfile(self, trap_errors=True): + def set_keyseedfile(self, trap_errors=True, refresh=False): if not self.keydir: logger.debug("GkeysGPG.set_keyseedfile(); self.keydir error") self.seedfile = Seeds(pjoin(self.keydir, 'gkey.seeds'), self.config) - self.seedfile.load(trap_errors=trap_errors) + self.seedfile.load(trap_errors=trap_errors, refresh=refresh) def sign_file(self, gkey, mode, fingerprint, filepath): diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py index 67354f3..1a2bae2 100644 --- a/gkeys/gkeys/seed.py +++ b/gkeys/gkeys/seed.py @@ -19,6 +19,7 @@ with gentoo-keys specific convienience functions. import json import os +from gkeys.exception import UpdateDbError from gkeys.log import logger from gkeys.gkey import GKEY from gkeys.fileops import ensure_dirs @@ -38,7 +39,7 @@ class Seeds(object): self.seeds = {} - def load(self, filename=None, trap_errors=True): + def load(self, filename=None, trap_errors=True, refresh=False): '''Load the seed file into memory''' if filename: self.filename = filename @@ -59,8 +60,12 @@ class Seeds(object): for seed in list(seedlines.items()): # GKEY class change auto-update if not 'uid' in list(seed[1]): + if not refresh: + raise UpdateDbError(filename) seed[1]['uid'] = [] if not 'keys' in list(seed[1]): + if not refresh: + raise UpdateDbError(filename) seed[1]['keys'] = seed[1]['fingerprint'][:] #try: diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py index a9fb720..5ddccbe 100644 --- a/gkeys/gkeys/seedhandler.py +++ b/gkeys/gkeys/seedhandler.py @@ -14,6 +14,7 @@ import os import re from json import load +from gkeys.exception import UpdateDbError from gkeys.gkey import GKEY from gkeys.seed import Seeds from gkeys.fileops import ensure_dirs @@ -58,7 +59,7 @@ class SeedHandler(object): pass return keyinfo - def load_seeds(self, seedfile=None, filepath=None): + def load_seeds(self, seedfile=None, filepath=None, refresh=False): '''Load seed file @param seeds: string of the short name seed file @@ -77,11 +78,11 @@ class SeedHandler(object): self.logger.debug("SeedHandler: load_seeds; seeds filepath to load: " "%s" % filepath) seeds = Seeds(config=self.config) - seeds.load(filepath) + seeds.load(filepath, refresh=refresh) self.seeds = seeds return seeds - def load_category(self, category, nicks=None): + def load_category(self, category, nicks=None, refresh=False): '''Loads the designated key directories @param category: string @@ -113,8 +114,12 @@ class SeedHandler(object): key = seed[nick] # GKEY class change auto-update if not 'uid' in list(key): + if not refresh: + raise UpdateDbError(category) key['uid'] = [] if not 'keys' in list(key): + if not refresh: + raise UpdateDbError(category) key['keys'] = key['fingerprint'][:] seeds.add(nick, GKEY(**key)) except OSError as error: