Closing keystone sessions after done with them.
[snaps.git] / snaps / domain / volume.py
index 9b35c9b..0ab2a7d 100644 (file)
 # limitations under the License.
 
 
+class Volume:
+    """
+    SNAPS domain object for Volumes. Should contain attributes that
+    are shared amongst cloud providers
+    """
+    def __init__(self, name, volume_id, project_id, description, size,
+                 vol_type, availability_zone, multi_attach,
+                 attachments=list()):
+        """
+        Constructor
+        :param name: the volume's name
+        :param volume_id: the volume's id
+        :param project_id: the volume's associated project id
+        :param description: the volume's description
+        :param size: the volume's size in GB
+        :param vol_type: the volume's type
+        :param availability_zone: the volume's availability zone
+        :param multi_attach: When true, volume can be attached to multiple VMs
+        :param attachments: List of dict objects containing the info on where
+                            this volume is attached
+        """
+        self.name = name
+        self.id = volume_id
+        self.project_id = project_id
+        self.description = description
+        self.size = size
+        self.type = vol_type
+        self.availability_zone = availability_zone
+        self.multi_attach = multi_attach
+        self.attachments = attachments
+
+    def __eq__(self, other):
+        return (self.name == other.name
+                and self.id == other.id
+                and self.project_id == other.project_id
+                and self.description == other.description
+                and self.size == other.size
+                and self.type == other.type
+                and self.availability_zone == other.availability_zone
+                and self.multi_attach == other.multi_attach)
+
+
+class VolumeType:
+    """
+    SNAPS domain object for Volume Types. Should contain attributes that
+    are shared amongst cloud providers
+    """
+    def __init__(self, name, volume_type_id, public, encryption, qos_spec):
+        """
+        Constructor
+        :param name: the volume's name
+        :param volume_type_id: the volume type's id
+        :param public: True if public
+        :param encryption: instance of a VolumeTypeEncryption domain object
+        :param qos_spec: instance of a QoSSpec domain object
+        """
+        self.name = name
+        self.id = volume_type_id
+        self.public = public
+        self.encryption = encryption
+        self.qos_spec = qos_spec
+
+    def __eq__(self, other):
+        return (self.name == other.name and self.id == other.id
+                and self.public == other.public
+                and self.encryption == other.encryption
+                and self.qos_spec == other.qos_spec)
+
+
+class VolumeTypeEncryption:
+    """
+    SNAPS domain object for Volume Types. Should contain attributes that
+    are shared amongst cloud providers
+    """
+    def __init__(self, volume_encryption_id, volume_type_id,
+                 control_location, provider, cipher, key_size):
+        """
+        Constructor
+        :param volume_encryption_id: the encryption id
+        :param volume_type_id: the associated volume type's id
+        :param control_location: front-end | back-end
+        :param provider: the encryption provider class
+        :param cipher: the encryption cipher
+        :param key_size: the encryption key size
+        """
+        self.id = volume_encryption_id
+        self.volume_type_id = volume_type_id
+        self.control_location = control_location
+        self.provider = provider
+        self.cipher = cipher
+        self.key_size = key_size
+
+    def __eq__(self, other):
+        return (self.id == other.id
+                and self.volume_type_id == other.volume_type_id
+                and self.control_location == other.control_location
+                and self.provider == other.provider
+                and self.cipher == other.cipher
+                and self.key_size == other.key_size)
+
+
 class QoSSpec:
     """
     SNAPS domain object for Volume Types. Should contain attributes that