Be more tolerant of 'ssh_authorized_keys' types
Instead of only expected a list, tuple, or set type allow for a string type and dict to be passed in for 'ssh_authorized_keys', and add log message that occurs if some other type is used that can not be correctly processed.
This commit is contained in:
commit
c537fa2dcd
@ -11,6 +11,9 @@
|
||||
- Increase the usefulness, robustness, configurability of the chef module
|
||||
so that it is more useful, more documented and better for users
|
||||
- Fix how '=' signs are not handled that well in ssh_utils (LP: #1391303)
|
||||
- Be more tolerant of ssh keys passed into 'ssh_authorized_keys'; allowing
|
||||
for list, tuple, set, dict, string types and warning on other unexpected
|
||||
types
|
||||
0.7.6:
|
||||
- open 0.7.6
|
||||
- Enable vendordata on CloudSigma datasource (LP: #1303986)
|
||||
|
@ -387,8 +387,20 @@ class Distro(object):
|
||||
|
||||
# Import SSH keys
|
||||
if 'ssh_authorized_keys' in kwargs:
|
||||
keys = set(kwargs['ssh_authorized_keys']) or []
|
||||
ssh_util.setup_user_keys(keys, name, options=None)
|
||||
# Try to handle this in a smart manner.
|
||||
keys = kwargs['ssh_authorized_keys']
|
||||
if isinstance(keys, (basestring, str)):
|
||||
keys = [keys]
|
||||
if isinstance(keys, dict):
|
||||
keys = list(keys.values())
|
||||
if keys is not None:
|
||||
if not isinstance(keys, (tuple, list, set)):
|
||||
LOG.warn("Invalid type '%s' detected for"
|
||||
" 'ssh_authorized_keys', expected list,"
|
||||
" string, dict, or set.", type(keys))
|
||||
else:
|
||||
keys = set(keys) or []
|
||||
ssh_util.setup_user_keys(keys, name, options=None)
|
||||
|
||||
return True
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user