mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
digital_ocean #3438: use get instead of [] to prevent KeyError
The existing code was using: a[b][c[d]] where a[b] would always exist and c[d] would always exist. But the nested index would not alway exist, particularly when a DigitalOcean item disapeared. This changes that nested index to a `get` and properly handles None results. This bug was present in two spots in this file.
This commit is contained in:
parent
ceff3b6ba3
commit
0c9c4ae401
1 changed files with 16 additions and 12 deletions
|
@ -350,17 +350,21 @@ or environment variables (DO_CLIENT_ID and DO_API_KEY)'''
|
|||
self.push(self.inventory, 'size_' +droplet['size_id'], dest)
|
||||
self.push(self.inventory, 'status_'+droplet['status'], dest)
|
||||
|
||||
region_name = self.index['region_to_name'][droplet['region_id']]
|
||||
self.push(self.inventory, 'region_'+region_name, dest)
|
||||
region_name = self.index['region_to_name'].get(droplet['region_id'])
|
||||
if region_name:
|
||||
self.push(self.inventory, 'region_'+region_name, dest)
|
||||
|
||||
size_name = self.index['size_to_name'][droplet['size_id']]
|
||||
self.push(self.inventory, 'size_'+size_name, dest)
|
||||
size_name = self.index['size_to_name'].get(droplet['size_id'])
|
||||
if size_name:
|
||||
self.push(self.inventory, 'size_'+size_name, dest)
|
||||
|
||||
image_name = self.index['image_to_name'][droplet['image_id']]
|
||||
self.push(self.inventory, 'image_'+image_name, dest)
|
||||
image_name = self.index['image_to_name'].get(droplet['image_id'])
|
||||
if image_name:
|
||||
self.push(self.inventory, 'image_'+image_name, dest)
|
||||
|
||||
distro_name = self.index['image_to_distro'][droplet['image_id']]
|
||||
self.push(self.inventory, 'distro_'+distro_name, dest)
|
||||
distro_name = self.index['image_to_distro'].get(droplet['image_id'])
|
||||
if distro_name:
|
||||
self.push(self.inventory, 'distro_'+distro_name, dest)
|
||||
|
||||
|
||||
def load_droplet_variables_for_host(self):
|
||||
|
@ -397,12 +401,12 @@ or environment variables (DO_CLIENT_ID and DO_API_KEY)'''
|
|||
|
||||
# Generate user-friendly variables (i.e. not the ID's)
|
||||
if droplet.has_key('region_id'):
|
||||
info['do_region'] = self.index['region_to_name'][droplet['region_id']]
|
||||
info['do_region'] = self.index['region_to_name'].get(droplet['region_id'])
|
||||
if droplet.has_key('size_id'):
|
||||
info['do_size'] = self.index['size_to_name'][droplet['size_id']]
|
||||
info['do_size'] = self.index['size_to_name'].get(droplet['size_id'])
|
||||
if droplet.has_key('image_id'):
|
||||
info['do_image'] = self.index['image_to_name'][droplet['image_id']]
|
||||
info['do_distro'] = self.index['image_to_distro'][droplet['image_id']]
|
||||
info['do_image'] = self.index['image_to_name'].get(droplet['image_id'])
|
||||
info['do_distro'] = self.index['image_to_distro'].get(droplet['image_id'])
|
||||
|
||||
return info
|
||||
|
||||
|
|
Loading…
Reference in a new issue