Gentoo Archives: gentoo-commits

From: Brian Dolbec <brian.dolbec@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/
Date: Sun, 01 Jun 2014 15:25:46
Message-Id: 1401477959.2427bfa1c92a2c5d8450b7a7c08120fa9aee73be.dol-sen@gentoo
1 commit: 2427bfa1c92a2c5d8450b7a7c08120fa9aee73be
2 Author: Pavlos Ratis <dastergon <AT> gentoo <DOT> org>
3 AuthorDate: Fri May 30 19:25:59 2014 +0000
4 Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
5 CommitDate: Fri May 30 19:25:59 2014 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=2427bfa1
7
8 implement fetchseed action and use sslfetch to download seeds
9
10 ---
11 gkeys/actions.py | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
12 gkeys/config.py | 3 +++
13 2 files changed, 72 insertions(+), 4 deletions(-)
14
15 diff --git a/gkeys/actions.py b/gkeys/actions.py
16 index 1ecf4d3..5c4d934 100644
17 --- a/gkeys/actions.py
18 +++ b/gkeys/actions.py
19 @@ -13,14 +13,15 @@
20 from __future__ import print_function
21
22 import os
23 +import re
24
25 -
26 -from gkeys.seedhandler import SeedHandler
27 +from gkeys.config import SEED_TYPES
28 from gkeys.lib import GkeysGPG
29 from gkeys.seed import Seeds
30 +from gkeys.seedhandler import SeedHandler
31 +from sslfetch.connections import Connector
32
33 -
34 -Available_Actions = ['listseed', 'addseed', 'removeseed', 'moveseed',
35 +Available_Actions = ['listseed', 'addseed', 'removeseed', 'moveseed', 'fetchseed',
36 'listseedfiles', 'listkey', 'addkey', 'removekey', 'movekey',
37 'installed']
38
39 @@ -53,6 +54,62 @@ class Actions(object):
40 return seeds
41
42
43 + def fetch_seeds(self, seeds):
44 + # setup the ssl-fetch ouptut map
45 + connector_output = {
46 + 'info': self.logger.info,
47 + 'error': self.logger.error,
48 + 'kwargs-info': {},
49 + 'kwargs-error': {},
50 + }
51 + urls = []
52 + messages = []
53 + urls.append(self.config.get_key('developers.seeds'))
54 + urls.append(self.config.get_key('release.seeds'))
55 + if not re.search('^(http|https)://', urls[0]) and not re.search('^(http|https)://', urls[1]):
56 + urls = []
57 + urls.append(self.config['seedurls']['developers.seeds'])
58 + urls.append(self.config['seedurls']['release.seeds'])
59 + fetcher = Connector(connector_output, None, "Gentoo Keys")
60 + for url in zip(urls, SEED_TYPES):
61 + timestamp_path = self.config['%s-timestamp' % url[1]]
62 + success, seeds, timestamp = fetcher.fetch_content(url[0], timestamp_path)
63 + if not timestamp:
64 + messages += ["%s seed file is already up to date." % url[1]]
65 + else:
66 + with open(timestamp_path, 'w+') as timestampfile:
67 + timestampfile.write(str(timestamp))
68 + timestampfile.write("\n")
69 + if success and timestamp:
70 + self.logger.debug("MAIN: _action_fetchseed; got results.")
71 + filename = self.config['%s-seedfile' % url[1]] + '.new'
72 + with open(filename, 'w') as seedfile:
73 + seedfile.write(seeds)
74 + filename = self.config['%s-seedfile' % url[1]]
75 + old = filename + '.old'
76 + try:
77 + self.logger.info("Backing up existing file...")
78 + if os.path.exists(old):
79 + self.logger.debug(
80 + "MAIN: _action_fetch_seeds; Removing 'old' seed file: %s"
81 + % old)
82 + os.unlink(old)
83 + if os.path.exists(filename):
84 + self.logger.debug(
85 + "MAIN: _action_fetch_seeds; Renaming current seed file to: "
86 + "%s" % old)
87 + os.rename(filename, old)
88 + self.logger.debug("MAIN: _action_fetch_seeds; Renaming '.new' seed file to %s"
89 + % filename)
90 + os.rename(filename + '.new', filename)
91 + messages += ["Successfully fetched %s seed files." % url[1]]
92 + except IOError:
93 + raise
94 + else:
95 + messages += ["Failed to fetch %s seed file." % url[1]]
96 + return messages
97 +
98 +
99 def listseed(self, args):
100 '''Action listseed method'''
101 handler = SeedHandler(self.logger)
102 @@ -69,6 +126,14 @@ class Actions(object):
103 return None
104
105
106 + def fetchseed(self, args):
107 + '''Action fetchseed method'''
108 + handler = SeedHandler(self.logger)
109 + messages = self.fetch_seeds(args.seeds)
110 + self.logger.debug("ACTIONS: fetchseed; args: %s" % str(args))
111 + return messages
112 +
113 +
114 def addseed(self, args):
115 '''Action addseed method'''
116 handler = SeedHandler(self.logger)
117
118 diff --git a/gkeys/config.py b/gkeys/config.py
119 index 6941368..161315e 100644
120 --- a/gkeys/config.py
121 +++ b/gkeys/config.py
122 @@ -38,6 +38,7 @@ EPREFIX = "@GENTOO_PORTAGE_EPREFIX@"
123 if "GENTOO_PORTAGE_EPREFIX" in EPREFIX:
124 EPREFIX = ''
125
126 +SEED_TYPES = ['dev', 'release']
127
128
129 class GKeysConfig(GPGConfig):
130 @@ -72,6 +73,8 @@ class GKeysConfig(GPGConfig):
131 self.defaults['seedsdir'] = '%(keysdir)s/seeds'
132 self.defaults['release-seedfile'] = '%(seedsdir)s/release.seeds'
133 self.defaults['dev-seedfile'] = '%(seedsdir)s/developer.seeds'
134 + self.defaults['dev-timestamp'] = '%(keysdir)s/.developer_seeds_timestamp'
135 + self.defaults['release-timestamp'] = '%(keysdir)s/.release_seeds_timestamp'
136 self.defaults['keyserver'] = 'pool.sks-keyservers.net'
137 self.defaults['seedurls'] = {
138 'release.seeds': 'https://dev.gentoo.org/~dolsen/gkey-seeds/release.seeds',