trove/trove/common/glance.py

39 lines
1.4 KiB
Python

# Copyright 2020 Catalyst Cloud
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from glanceclient import exc as glance_exceptions
from trove.common import exception
def get_image_id(client, image_id, image_tags):
"""Get and check image ID."""
if image_id:
try:
client.images.get(image_id)
except glance_exceptions.HTTPNotFound:
raise exception.ImageNotFound(uuid=image_id)
return image_id
elif image_tags:
if isinstance(image_tags, str):
image_tags = image_tags.split(',')
filters = {'tag': image_tags, 'status': 'active'}
images = list(client.images.list(
filters=filters, sort='created_at:desc', limit=1))
if not images:
raise exception.ImageNotFoundByTags(tags=image_tags)
image_id = images[0]['id']
return image_id