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
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))
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)
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
class ComputeNode(model.Model): object_id = model.PrimaryKey() interfaces = model.Dict(required=True, missing=list) def equals(self, other): return False