Source code for ubuntufinder.models

#coding:utf-8
import datetime


[docs]class BaseImage(object): """ A base image model, as can be searched for. :ivar release: The Ubuntu release codename for this Image. :ivar platform: Set to server for Cloud Images. :ivar instance_type: The instance type supported by this Image (ebs or instance-store). :ivar architecture: The architecture for this Image (i386 or amd64) :ivar region: The region for this Image (us-east-1, etc.) :ivar virtualization: The virtualization technology for this Image (paravirtual of hvm) """ def __init__(self, release, platform, instance_type, architecture, region, virtualization): self.release = release self.platform = platform self.instance_type = instance_type self.architecture = architecture self.region = region self.virtualization = virtualization def __str__(self): return "{0}@{1} ({2} {3} {4})".format(self.release, self.region, self.architecture, self.instance_type, self.virtualization) def __repr__(self): return "<{0}: {1}>".format(self.__class__.__name__, self)
[docs]class SearchImage(BaseImage): """ An Image used to search for other images. """
[docs] def matches(self, image): """ Checks whether an image matches this search image. :param image: The Image to compare to the SearchImage :type image: BaseImage :returns: Whether the Image matches :rtype: bool """ for attr in ["release", "platform", "instance_type", "architecture", "region", "virtualization"]: if getattr(self, attr) != getattr(image, attr): return False return True
[docs]class Image(BaseImage): """ An image as presented in CloudImages. :ivar date: The date this Image was released :ivar stability: The stability of this Image (release or devel) :ivar ami_id: The AMI ID for this Image :ivar aki_id: The AKI ID for this Image """ def __init__(self, release, platform, stability, date, instance_type, architecture, region, ami_id, aki_id, _, virtualization): super(Image, self).__init__(release, platform, instance_type, architecture, region, virtualization) # Sometimes the date has ".1", so we need to remove it. self.date = datetime.datetime.strptime(date.split('.', 1)[0], "%Y%m%d") self.stability = stability self.ami_id = ami_id self.aki_id = aki_id self._ = _ def __str__(self): return "{0}@{1}: {2} ({3} {4} {5})".format(self.release, self.region, self.date, self.architecture, self.instance_type, self.virtualization)