Refactored VmInst domain class for Ports.
[snaps.git] / snaps / domain / vm_inst.py
index 0e12d14..c49b03e 100644 (file)
@@ -19,14 +19,38 @@ class VmInst:
     SNAPS domain object for Images. Should contain attributes that
     are shared amongst cloud providers
     """
-    def __init__(self, name, inst_id):
+    def __init__(self, name, inst_id, image_id, flavor_id, ports,
+                 keypair_name, sec_grp_names, volume_ids):
         """
         Constructor
         :param name: the image's name
         :param inst_id: the instance's id
+        :param image_id: the instance's image id
+        :param flavor_id: the ID used to spawn this instance
+        :param ports: list of SNAPS-OO Port domain objects associated with this
+                      server instance
+        :param keypair_name: the name of the associated keypair
+        :param sec_grp_names: list of security group names
+        :param volume_ids: list of attached volume IDs
         """
         self.name = name
         self.id = inst_id
+        self.image_id = image_id
+        self.flavor_id = flavor_id
+        self.ports = ports
+        self.keypair_name = keypair_name
+        self.sec_grp_names = sec_grp_names
+        self.volume_ids = volume_ids
+
+    def __eq__(self, other):
+        return (self.name == other.name and
+                self.id == other.id and
+                self.image_id == other.image_id and
+                self.flavor_id == other.flavor_id and
+                self.ports == other.ports and
+                self.keypair_name == other.keypair_name and
+                self.sec_grp_names == other.sec_grp_names and
+                self.volume_ids == other.volume_ids)
 
 
 class FloatingIp:
@@ -34,11 +58,26 @@ class FloatingIp:
     SNAPS domain object for Images. Should contain attributes that
     are shared amongst cloud providers
     """
-    def __init__(self, inst_id, ip):
+    def __init__(self, **kwargs):
         """
         Constructor
-        :param inst_id: the floating ip's id
-        :param ip: the IP address
+        :param id: the floating ip's id
+        :param description: the description
+        :param ip|floating_ip_address: the Floating IP address mapped to the
+                                       'ip' attribute
+        :param fixed_ip_address: the IP address of the tenant network
+        :param floating_network_id: the ID of the external network
+        :param port_id: the ID of the associated port
+        :param router_id: the ID of the associated router
+        :param project_id|tenant_id: the ID of the associated project mapped to
+                                     the attribute 'project_id'
+        :param
         """
-        self.id = inst_id
-        self.ip = ip
+        self.id = kwargs.get('id')
+        self.description = kwargs.get('description')
+        self.ip = kwargs.get('ip', kwargs.get('floating_ip_address'))
+        self.fixed_ip_address = kwargs.get('fixed_ip_address')
+        self.floating_network_id = kwargs.get('floating_network_id')
+        self.port_id = kwargs.get('port_id')
+        self.router_id = kwargs.get('router_id')
+        self.project_id = kwargs.get('project_id', kwargs.get('tenant_id'))