Merge "Refactor behaviors for glance v2"
This commit is contained in:
@@ -21,42 +21,87 @@ from cloudcafe.images.common.types import \
|
||||
ImageContainerFormat, ImageDiskFormat, ImageVisibility
|
||||
|
||||
|
||||
class ImagesV2Behaviors(BaseBehavior):
|
||||
class ImagesBehaviors(BaseBehavior):
|
||||
"""@summary: Behaviors class for images v2"""
|
||||
|
||||
def __init__(self, images_client, images_config):
|
||||
super(ImagesV2Behaviors, self).__init__()
|
||||
super(ImagesBehaviors, self).__init__()
|
||||
self.config = images_config
|
||||
self.client = images_client
|
||||
self.resources = ResourcePool()
|
||||
|
||||
def register_basic_image(self):
|
||||
"""
|
||||
@summary: Register a basic image, add it for deletion and return the
|
||||
image id
|
||||
"""
|
||||
def create_new_image(self, container_format=None, disk_format=None,
|
||||
name=None, protected=None, tags=None,
|
||||
visibility=None):
|
||||
"""@summary: Create new image and add it for deletion"""
|
||||
|
||||
if container_format is None:
|
||||
container_format = ImageContainerFormat.BARE
|
||||
if disk_format is None:
|
||||
disk_format = ImageDiskFormat.RAW
|
||||
if name is None:
|
||||
name = rand_name('image')
|
||||
if protected is None:
|
||||
protected = False
|
||||
if tags is None:
|
||||
tags = []
|
||||
if visibility is None:
|
||||
visibility = ImageVisibility.PRIVATE
|
||||
response = self.client.create_image(
|
||||
container_format=ImageContainerFormat.BARE,
|
||||
disk_format=ImageDiskFormat.RAW, name=rand_name('image'),
|
||||
visibility=ImageVisibility.PUBLIC)
|
||||
container_format=container_format, disk_format=disk_format,
|
||||
name=name, protected=protected, tags=tags, visibility=visibility)
|
||||
image = response.entity
|
||||
self.resources.add(self.client.delete_image, image.id)
|
||||
return image.id
|
||||
if image is not None:
|
||||
self.resources.add(image.id_, self.client.delete_image)
|
||||
return image
|
||||
|
||||
def register_private_image(self):
|
||||
"""
|
||||
@summary: Register a private image, add it for deletion and return the
|
||||
image id
|
||||
"""
|
||||
def create_new_images(self, container_format=None, disk_format=None,
|
||||
name=None, protected=None, tags=None,
|
||||
visibility=None, count=1):
|
||||
"""@summary: Create new images and add them for deletion"""
|
||||
|
||||
response = self.client.create_image(
|
||||
container_format=ImageContainerFormat.BARE,
|
||||
disk_format=ImageDiskFormat.RAW, name=rand_name('image'),
|
||||
visibility=ImageVisibility.PRIVATE)
|
||||
image = response.entity
|
||||
self.resources.add(self.client.delete_image, image.id)
|
||||
return image.id
|
||||
image_list = []
|
||||
for i in range(count):
|
||||
image = self.create_new_image(
|
||||
container_format=container_format, disk_format=disk_format,
|
||||
name=name, protected=protected, tags=tags,
|
||||
visibility=visibility)
|
||||
image_list.append(image)
|
||||
return image_list
|
||||
|
||||
def list_images_pagination(self, name=None, disk_format=None,
|
||||
container_format=None, visibility=None,
|
||||
status=None, checksum=None, owner=None,
|
||||
min_ram=None, min_disk=None, changes_since=None,
|
||||
protected=None, size_min=None, size_max=None,
|
||||
sort_key=None, sort_dir=None, marker=None,
|
||||
limit=None):
|
||||
"""@summary: Get images accounting for pagination as needed"""
|
||||
|
||||
image_list = []
|
||||
results_limit = self.config.results_limit
|
||||
response = self.client.list_images(
|
||||
name=name, disk_format=disk_format,
|
||||
container_format=container_format, visibility=visibility,
|
||||
status=status, checksum=checksum, owner=owner, min_ram=min_ram,
|
||||
min_disk=min_disk, changes_since=changes_since,
|
||||
protected=protected, size_min=size_min, size_max=size_max,
|
||||
sort_key=sort_key, sort_dir=sort_dir, marker=marker, limit=limit)
|
||||
images = response.entity
|
||||
while len(images) == results_limit:
|
||||
image_list += images
|
||||
marker = images[results_limit - 1].id_
|
||||
response = self.client.list_images(
|
||||
name=name, disk_format=disk_format,
|
||||
container_format=container_format, visibility=visibility,
|
||||
status=status, checksum=checksum, owner=owner, min_ram=min_ram,
|
||||
min_disk=min_disk, changes_since=changes_since,
|
||||
protected=protected, size_min=size_min, size_max=size_max,
|
||||
sort_key=sort_key, sort_dir=sort_dir, marker=marker,
|
||||
limit=limit)
|
||||
images = response.entity
|
||||
image_list += images
|
||||
return image_list
|
||||
|
||||
def get_member_ids(self, image_id):
|
||||
"""
|
||||
@@ -65,4 +110,5 @@ class ImagesV2Behaviors(BaseBehavior):
|
||||
"""
|
||||
|
||||
response = self.client.list_members(image_id)
|
||||
return [member.member_id for member in response.entity]
|
||||
members = response.entity
|
||||
return [member.member_id for member in members]
|
||||
|
||||
Reference in New Issue
Block a user