Example #1
0
class Image(model.Model):
    object_id = model.PrimaryKey()
    name = model.String(allow_none=True)
    tenant = model.Dependency(identity.Tenant)
    checksum = model.String(allow_none=True)
    size = model.Integer()
    virtual_size = model.Integer(allow_none=True, missing=None)
    is_public = model.Boolean()
    protected = model.Boolean()
    container_format = model.String(missing='qcow2')
    disk_format = model.String(missing='bare')
    min_disk = model.Integer(required=True)
    min_ram = model.Integer(required=True)
    properties = model.Dict()
    members = model.Reference(ImageMember, many=True, missing=list)
    status = model.String()

    def equals(self, other):
        # pylint: disable=no-member
        if super(Image, self).equals(other):
            return True
        # TODO: consider comparing properties
        return self.tenant.equals(other.tenant) and \
            self.name == other.name and \
            self.checksum == other.checksum and \
            self.size == other.size and \
            self.is_public == other.is_public and \
            self.container_format == other.container_format and \
            self.disk_format == other.disk_format
Example #2
0
class Flavor(model.Model):
    object_id = model.PrimaryKey()
    flavor_id = model.String(required=True)
    is_deleted = model.Boolean(required=True)
    is_disabled = model.Boolean(required=True)
    is_public = model.Boolean(required=True)
    name = model.String(required=True)
    vcpus = model.Integer(required=True)
    memory_mb = model.Integer(required=True)
    root_gb = model.Integer(required=True)
    ephemeral_gb = model.Integer(required=True)
    swap_mb = model.Integer(required=True)
    vcpu_weight = model.Integer(allow_none=True, missing=None)
    rxtx_factor = model.Float(required=True)
    extra_specs = model.Dict(missing=dict)

    def equals(self, other):
        # pylint: disable=no-member
        if super(Flavor, self).equals(other):
            return True
        return (self.is_public == other.is_public
                and self.is_disabled == other.is_disabled
                and self.name == other.name and self.vcpus == other.vcpus
                and self.memory_mb == other.memory_mb
                and self.root_gb == self.root_gb
                and self.ephemeral_gb == self.ephemeral_gb
                and self.swap_mb == self.swap_mb
                and self.vcpu_weight == self.vcpu_weight
                and self.rxtx_factor == self.rxtx_factor
                and model.Dict.equals(self.extra_specs, other.extra_specs))
Example #3
0
class Volume(model.Model):
    object_id = model.PrimaryKey()
    name = model.String(required=True, allow_none=True)
    description = model.String(required=True, allow_none=True)
    availability_zone = model.String(required=True)
    encrypted = model.Boolean(missing=False)
    host = model.String(required=True)
    size = model.Integer(required=True)
    tenant = model.Dependency(identity.Tenant, required=True)
    metadata = model.Dict(missing=dict)
    volume_type = model.String(required=True)
Example #4
0
class Server(model.Model):
    object_id = model.PrimaryKey()
    name = model.String(required=True)
    security_groups = model.Nested(SecurityGroup, many=True, missing=list)
    status = model.String(required=True)
    tenant = model.Dependency(identity.Tenant)
    image = model.Dependency(image_model.Image, allow_none=True)
    image_membership = model.Dependency(image_model.ImageMember,
                                        allow_none=True)
    user_id = model.String(required=True)  # TODO: user reference
    key_name = model.String(required=True, allow_none=True)
    flavor = model.Dependency(Flavor)
    config_drive = model.String(required=True)
    availability_zone = model.String(required=True, allow_none=True)
    host = model.String(required=True)
    hypervisor_hostname = model.String(required=True)
    instance_name = model.String(required=True)
    metadata = model.Dict(missing=dict)
    ephemeral_disks = model.Nested(EphemeralDisk, many=True, missing=list)
    attached_volumes = model.Dependency(storage.Attachment,
                                        many=True,
                                        missing=list)
    compute_node = model.Reference(ComputeNode,
                                   required=True,
                                   ensure_existence=True)

    # TODO: ports

    def equals(self, other):
        # pylint: disable=no-member
        if super(Server, self).equals(other):
            return True
        # TODO: consider comparing metadata
        # TODO: consider comparing security_groups
        if not self.tenant.equals(other.tenant):
            return False
        if not self.flavor.equals(other.flavor):
            return False
        if not self.image.equals(other.image):
            return False
        if self.key_name != other.key_name or self.name != other.name:
            return False
        return True
Example #5
0
class ComputeNode(model.Model):
    object_id = model.PrimaryKey()
    interfaces = model.Dict(required=True, missing=list)

    def equals(self, other):
        return False