[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