From: Sandrine Avakian Date: Mon, 8 Oct 2012 11:28:08 +0000 (+0200) Subject: Merge branch 'master' into senslab2 X-Git-Tag: sfa-2.1-24~3^2~80 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=dbd15819d950b69d0c6ba5527660969d0754ad29;p=sfa.git Merge branch 'master' into senslab2 Conflicts: sfa/client/client_helper.py sfa/managers/registry_manager.py --- dbd15819d950b69d0c6ba5527660969d0754ad29 diff --cc sfa/managers/driver.py index 6b2681ca,f049f549..ab3b2165 --- a/sfa/managers/driver.py +++ b/sfa/managers/driver.py @@@ -20,13 -20,10 +20,11 @@@ class Driver # the following is used in Resolve (registry) when run in full mode # after looking up the sfa db, we wish to be able to display # testbed-specific info as well - # this at minima should fill in the 'researcher' field for slice records - # as this information is then used to compute rights - # roadmap: there is an intention to redesign the SFA database so as to clear up - # this constraint, based on the principle that SFA should not rely on the - # testbed database to perform such a core operation (i.e. getting rights right) + # based on the principle that SFA should not rely on the testbed database + # to perform such a core operation (i.e. getting rights right) + # this is no longer in use when performing other SFA operations def augment_records_with_testbed_info (self, sfa_records): + print >>sys.stderr, " \r\n \r\n DRIVER.PY augment_records_with_testbed_info sfa_records ",sfa_records return sfa_records # incoming record, as provided by the client to the Register API call diff --cc sfa/managers/registry_manager.py index 2f530904,564fb44c..d1a4c6f5 --- a/sfa/managers/registry_manager.py +++ b/sfa/managers/registry_manager.py @@@ -155,15 -155,18 +155,18 @@@ class RegistryManager local_records = dbsession.query(RegRecord).filter(RegRecord.hrn.in_(local_hrns)) if type: local_records = local_records.filter_by(type=type) - local_records=local_records.all() + local_records=local_records.all() - logger.info("Resolve: local_records=%s (type=%s)"%(local_records,type)) + + for local_record in local_records: + augment_with_sfa_builtins (local_record) + + logger.info("Resolve, (details=%s,type=%s) local_records=%s "%(details,type,local_records)) local_dicts = [ record.__dict__ for record in local_records ] - if full: - # in full mode we get as much info as we can, which involves contacting the + if details: + # in details mode we get as much info as we can, which involves contacting the # testbed for getting implementation details about the record self.driver.augment_records_with_testbed_info(local_dicts) - #logger.debug("Resolve: local_dicts =%s "%(local_dicts)) # also we fill the 'url' field for known authorities # used to be in the driver code, sounds like a poorman thing though def solve_neighbour_url (record): @@@ -175,7 -177,7 +177,6 @@@ record.url=neighbour_dict[hrn].get_url() return for record in local_records: solve_neighbour_url (record) - #logger.debug("\solve_neighbour_url = OK ") - # convert local record objects to dicts for xmlrpc # xxx somehow here calling dict(record) issues a weird error # however record.todict() seems to work fine diff --cc sfa/rspecs/elements/versions/sfav1Lease.py index f36418d8,03a43422..6275121b --- a/sfa/rspecs/elements/versions/sfav1Lease.py +++ b/sfa/rspecs/elements/versions/sfav1Lease.py @@@ -32,13 -32,43 +32,44 @@@ class SFAv1Lease else: network_elem = xml - lease_elems = [] - for lease in leases: - lease_fields = ['lease_id', 'component_id', 'slice_id', 'start_time', 'duration'] - lease_elem = network_elem.add_instance('lease', lease, lease_fields) + # group the leases by slice and timeslots + grouped_leases = [] + + while leases: + slice_id = leases[0]['slice_id'] + start_time = leases[0]['start_time'] + duration = leases[0]['duration'] + group = [] + + for lease in leases: + if slice_id == lease['slice_id'] and start_time == lease['start_time'] and duration == lease['duration']: + group.append(lease) + + grouped_leases.append(group) + + for lease1 in group: + leases.remove(lease1) + + lease_elems = [] + for lease in grouped_leases: + #lease_fields = ['lease_id', 'component_id', 'slice_id', 'start_time', 'duration'] + lease_fields = ['slice_id', 'start_time', 'duration'] + lease_elem = network_elem.add_instance('lease', lease[0], lease_fields) lease_elems.append(lease_elem) + logger.debug("SFAV1LEASE \t add_lease lease %s" %(lease)) + # add nodes of this lease + for node in lease: + lease_elem.add_instance('node', node, ['component_id']) + + + + # lease_elems = [] + # for lease in leases: + # lease_fields = ['lease_id', 'component_id', 'slice_id', 'start_time', 'duration'] + # lease_elem = network_elem.add_instance('lease', lease, lease_fields) + # lease_elems.append(lease_elem) + @staticmethod def get_leases(xml, filter={}):