Project

General

Profile

root / trunk / src / haizea / core / frontends / rpc.py @ 632

1
# -------------------------------------------------------------------------- #
2
# Copyright 2006-2008, University of Chicago                                 #
3
# Copyright 2008, Distributed Systems Architecture Group, Universidad        #
4
# Complutense de Madrid (dsa-research.org)                                   #
5
#                                                                            #
6
# Licensed under the Apache License, Version 2.0 (the "License"); you may    #
7
# not use this file except in compliance with the License. You may obtain    #
8
# a copy of the License at                                                   #
9
#                                                                            #
10
# http://www.apache.org/licenses/LICENSE-2.0                                 #
11
#                                                                            #
12
# Unless required by applicable law or agreed to in writing, software        #
13
# distributed under the License is distributed on an "AS IS" BASIS,          #
14
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
15
# See the License for the specific language governing permissions and        #
16
# limitations under the License.                                             #
17
# -------------------------------------------------------------------------- #
18
import haizea.common.constants as constants
19
from haizea.core.scheduler.slottable import ResourceTuple
20
from haizea.core.leases import Lease
21
from haizea.core.frontends import RequestFrontend
22
from haizea.common.utils import round_datetime, get_config, get_clock, get_lease_id
23
from mx.DateTime import DateTimeDelta, TimeDelta, ISO
24
import logging
25

    
26
class RPCFrontend(RequestFrontend):
27
    def __init__(self, manager):
28
        self.manager = manager
29
        self.logger = logging.getLogger("RPCREQ")
30
        self.accumulated = []
31
        config = get_config()
32
        self.manager.rpc_server.register_rpc(self.create_lease)
33

    
34
    def get_accumulated_requests(self):
35
        acc = self.accumulated
36
        self.accumulated = []
37
        return acc
38
    
39
    def exists_more_requests(self): 
40
        return True
41

    
42
    def create_lease(self, lease_xml_str):     
43
        lease = Lease.from_xml_string(lease_xml_str)
44
        lease.id = get_lease_id()
45
        self.accumulated.append(lease)        
46
        return lease.id
47
        
48
        
49
    
50
    
51