def _list_images__fetch_images(self, search=None):
default_images = config.EC2_IMAGES[self.cloud.region]
image_ids = default_images.keys() + self.cloud.starred
if not search:
try:
# this might break if image_ids contains starred images
# that are not valid anymore for AWS
images = self.connection.list_images(None, image_ids)
except Exception as e:
bad_ids = re.findall(r'ami-\w*', e.message, re.DOTALL)
for bad_id in bad_ids:
self.cloud.starred.remove(bad_id)
self.cloud.save()
images = self.connection.list_images(None,
default_images.keys() +
self.cloud.starred)
for image in images:
if image.id in default_images:
image.name = default_images[image.id]
images += self.connection.list_images(ex_owner='self')
else:
image_models = CloudImage.objects(
me.Q(cloud_provider=self.connection.type,
image_id__icontains=search) |
me.Q(cloud_provider=self.connection.type,
name__icontains=search)
)[:200]
images = [NodeImage(id=image.image_id, name=image.name,
driver=self.connection, extra={})
for image in image_models]
if not images:
# Actual search on EC2.
images = self.connection.list_images(
ex_filters={'name': '*%s*' % search}
)
return images
评论列表
文章目录