[haizea-commit] r507 - in trunk/src/haizea/resourcemanager: . enact

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Wed Sep 24 05:19:28 CDT 2008


Author: borja
Date: 2008-09-24 05:19:28 -0500 (Wed, 24 Sep 2008)
New Revision: 507

Modified:
   trunk/src/haizea/resourcemanager/enact/opennebula.py
   trunk/src/haizea/resourcemanager/rm.py
   trunk/src/haizea/resourcemanager/rpcserver.py
Log:
- Add dummy OpenNebula deployment enactment class
- Make RPC Server stoppable (and stop it when Haizea stops)

Modified: trunk/src/haizea/resourcemanager/enact/opennebula.py
===================================================================
--- trunk/src/haizea/resourcemanager/enact/opennebula.py	2008-09-19 17:00:46 UTC (rev 506)
+++ trunk/src/haizea/resourcemanager/enact/opennebula.py	2008-09-24 10:19:28 UTC (rev 507)
@@ -17,7 +17,7 @@
 # -------------------------------------------------------------------------- #
 
 from haizea.resourcemanager.resourcepool import Node
-from haizea.resourcemanager.enact import ResourcePoolInfo, VMEnactment
+from haizea.resourcemanager.enact import ResourcePoolInfo, VMEnactment, DeploymentEnactment
 from haizea.common.utils import get_config
 import haizea.common.constants as constants
 import haizea.resourcemanager.datastruct as ds
@@ -186,3 +186,12 @@
                 result = 1
         return result
 
+class OpenNebulaDummyDeploymentEnactment(DeploymentEnactment):    
+    def __init__(self):
+        DeploymentEnactment.__init__(self)
+            
+    def get_aux_nodes(self):
+        return [] 
+            
+    def resolve_to_file(self, lease_id, vnode, diskimage_id):
+        return "/var/haizea/images/%s-L%iV%i" % (diskimage_id, lease_id, vnode)
\ No newline at end of file

Modified: trunk/src/haizea/resourcemanager/rm.py
===================================================================
--- trunk/src/haizea/resourcemanager/rm.py	2008-09-19 17:00:46 UTC (rev 506)
+++ trunk/src/haizea/resourcemanager/rm.py	2008-09-24 10:19:28 UTC (rev 507)
@@ -36,7 +36,7 @@
 import haizea.resourcemanager.enact as enact
 from haizea.resourcemanager.deployment.unmanaged import UnmanagedDeploymentScheduler
 from haizea.resourcemanager.deployment.imagetransfer import ImageTransferDeploymentScheduler
-from haizea.resourcemanager.enact.opennebula import OpenNebulaResourcePoolInfo, OpenNebulaVMEnactment
+from haizea.resourcemanager.enact.opennebula import OpenNebulaResourcePoolInfo, OpenNebulaVMEnactment, OpenNebulaDummyDeploymentEnactment
 from haizea.resourcemanager.enact.simulated import SimulatedResourcePoolInfo, SimulatedVMEnactment, SimulatedDeploymentEnactment
 from haizea.resourcemanager.frontends.tracefile import TracefileFrontend
 from haizea.resourcemanager.frontends.opennebula import OpenNebulaFrontend
@@ -184,8 +184,8 @@
         # Enactment modules
         info_enact = OpenNebulaResourcePoolInfo()
         vm_enact = OpenNebulaVMEnactment()
-        # No deployment in OpenNebula. Using simulated one for now.
-        deploy_enact = SimulatedDeploymentEnactment()
+        # No deployment in OpenNebula. Using dummy one for now.
+        deploy_enact = OpenNebulaDummyDeploymentEnactment()
             
         # Slot table
         slottable = SlotTable()
@@ -319,6 +319,10 @@
         # Write all collected data to disk
         self.accounting.save_to_disk()
         
+        # Stop RPC server
+        if self.rpc_server != None:
+            self.rpc_server.stop()
+        
     def process_requests(self, nexttime):
         """Process any new requests in the request frontend
         

Modified: trunk/src/haizea/resourcemanager/rpcserver.py
===================================================================
--- trunk/src/haizea/resourcemanager/rpcserver.py	2008-09-19 17:00:46 UTC (rev 506)
+++ trunk/src/haizea/resourcemanager/rpcserver.py	2008-09-24 10:19:28 UTC (rev 507)
@@ -22,12 +22,23 @@
 
 DEFAULT_HAIZEA_PORT = 42493
 
+class StoppableSimpleXMLRPCServer(SimpleXMLRPCServer):
+    allow_reuse_address = True
+
+    def serve_forever(self):
+        self.run = True
+        while not self.run:
+            self.handle_request()
+
+    def stop(self):
+        self.run = False
+
 class RPCServer(object):
     def __init__(self, rm):
         self.rm = rm
         self.logger = logging.getLogger("RPCSERVER")
         self.port = DEFAULT_HAIZEA_PORT
-        self.server = SimpleXMLRPCServer(("localhost", self.port), allow_none=True)
+        self.server = StoppableSimpleXMLRPCServer(("localhost", self.port), allow_none=True)
         self.register_rpc(self.test_func)
         self.register_rpc(self.cancel_lease)
         self.register_rpc(self.get_leases)
@@ -41,6 +52,9 @@
         server_thread = threading.Thread( target = self.serve )
         server_thread.start()
         
+    def stop(self):
+        self.server.stop()
+        
     def register_rpc(self, func):
         self.server.register_function(func)
         



More information about the Haizea-commit mailing list