From 8f23e54a807aad74789d0db409ecee0b532aeb34 Mon Sep 17 00:00:00 2001 From: Evgeny Vereshchagin Date: Tue, 12 Jan 2016 01:07:07 +0000 Subject: [PATCH] apt-key: convert ids to the 'short' format Fixes: $ ansible all -m apt_key -a 'state=present id=7A82B743B9B8E46F12C733FA4759FA960E27C0A6 keyserver=hkp://keyserver.ubuntu.com:80' --sudo 127.0.0.1 | SUCCESS => { "changed": true } $ ansible all -m apt_key -a 'state=absent id=7A82B743B9B8E46F12C733FA4759FA960E27C0A6' --sudo 127.0.0.1 | SUCCESS => { "changed": false } $ apt-key export 7A82B743B9B8E46F12C733FA4759FA960E27C0A6 -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 ... See https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1481871 --- lib/ansible/modules/packaging/os/apt_key.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/ansible/modules/packaging/os/apt_key.py b/lib/ansible/modules/packaging/os/apt_key.py index d41664f121a..bedd159f0c9 100644 --- a/lib/ansible/modules/packaging/os/apt_key.py +++ b/lib/ansible/modules/packaging/os/apt_key.py @@ -220,19 +220,22 @@ def main(): keyserver = module.params['keyserver'] changed = False + # we use the "short" id: key_id[-8:], short_format=True + # it's a workaround for https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1481871 + if key_id: try: _ = int(key_id, 16) if key_id.startswith('0x'): key_id = key_id[2:] - key_id = key_id.upper() + key_id = key_id.upper()[-8:] except ValueError: module.fail_json(msg="Invalid key_id", id=key_id) # FIXME: I think we have a common facility for this, if not, want check_missing_binaries(module) - short_format = (key_id is not None and len(key_id) == 8) + short_format = True keys = all_keys(module, keyring, short_format) return_values = {} @@ -257,7 +260,7 @@ def main(): keys2 = all_keys(module, keyring, short_format) if len(keys) != len(keys2): changed=True - if key_id and not key_id[-16:] in keys2: + if key_id and not key_id in keys2: module.fail_json(msg="key does not seem to have been added", id=key_id) module.exit_json(changed=changed) elif state == 'absent':