From b811df38a72b59b7bdefd7f8b7d63f9c330da0fb Mon Sep 17 00:00:00 2001 From: Jeppe Toustrup Date: Mon, 11 Aug 2014 11:57:23 +0200 Subject: [PATCH] apt_repository: Check if key already exists before trying to add it for a speed increase --- library/packaging/apt_repository | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/library/packaging/apt_repository b/library/packaging/apt_repository index a9f061ec37..02fe4659be 100644 --- a/library/packaging/apt_repository +++ b/library/packaging/apt_repository @@ -335,14 +335,19 @@ class UbuntuSourcesList(SourcesList): line = 'deb http://ppa.launchpad.net/%s/%s/ubuntu %s main' % (ppa_owner, ppa_name, distro.codename) return line, ppa_owner, ppa_name + def _key_already_exists(self, key_fingerprint): + rc, out, err = self.module.run_command('apt-key export %s' % key_fingerprint, check_rc=True) + return len(err) == 0 + def add_source(self, line, comment='', file=None): if line.startswith('ppa:'): source, ppa_owner, ppa_name = self._expand_ppa(line) if self.add_ppa_signing_keys_callback is not None: info = self._get_ppa_info(ppa_owner, ppa_name) - command = ['apt-key', 'adv', '--recv-keys', '--keyserver', 'hkp://keyserver.ubuntu.com:80', info['signing_key_fingerprint']] - self.add_ppa_signing_keys_callback(command) + if not self._key_already_exists(info['signing_key_fingerprint']): + command = ['apt-key', 'adv', '--recv-keys', '--keyserver', 'hkp://keyserver.ubuntu.com:80', info['signing_key_fingerprint']] + self.add_ppa_signing_keys_callback(command) file = file or self._suggest_filename('%s_%s' % (line, distro.codename)) else: