39 lines
1.4 KiB
Python
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
|