from sfa.util.policy import Policy
from sfa.util.prefixTree import prefixTree
from sfa.util.debug import log
-from sfa.server.aggregate import Aggregates
-from sfa.server.registry import Registries
MAXINT = 2L**31-1
def refresh_slices_smgr(self):
slice_hrns = []
- aggregates = Aggregates(self.api)
credential = self.api.getCredential()
- for aggregate in aggregates:
+ for aggregate in self.api.aggregates:
success = False
- # request hash is optional so lets try the call without it
try:
- slices = aggregates[aggregate].get_slices(credential)
+ slices = self.api.aggregates[aggregate].get_slices(credential)
slice_hrns.extend(slices)
success = True
except:
print >> log, "%s" % (traceback.format_exc())
print >> log, "Error calling slices at aggregate %(aggregate)s" % locals()
- # try sending the request hash if the previous call failed
- if not success:
- arg_list = [credential]
- try:
- slices = aggregates[aggregate].get_slices(credential)
- slice_hrns.extend(slices)
- success = True
- except:
- print >> log, "%s" % (traceback.format_exc())
- print >> log, "Error calling slices at aggregate %(aggregate)s" % locals()
-
# update timestamp and threshold
timestamp = datetime.datetime.now()
hr_timestamp = timestamp.strftime(self.api.time_format)
else:
site_id = sites[0]['site_id']
remote_site_id = sites[0]['peer_site_id']
+ old_site = sites[0]
+ #the site is alredy on the remote agg. Let us update(e.g. max_slices field) it with the latest info.
+ self.sync_site(old_site, site, peer)
return (site_id, remote_site_id)
person_record = {}
person_records = registry.resolve(credential, researcher)
for record in person_records:
- if record['type'] in ['user']:
+ if record['type'] in ['user'] and record['enabled']:
person_record = record
if not person_record:
- pass
+ return 1
person_dict = person_record
local_person=False
if peer:
slicename = hrn_to_pl_slicename(hrn)
slice = {}
slice_record = None
- registries = Registries(self.api)
- registry = registries[self.api.hrn]
+ registry = self.api.registries[self.api.hrn]
credential = self.api.getCredential()
site_id, remote_site_id = self.verify_site(registry, credential, hrn, peer, sfa_peer)
return 1
+ def sync_site(self, old_record, new_record, peer):
+ if old_record['max_slices'] != new_record['max_slices'] or old_record['max_slivers'] != new_record['max_slivers']:
+ if peer:
+ self.api.plshell.UnBindObjectFromPeer(self.api.plauth, 'site', old_record['site_id'], peer)
+ if old_record['max_slices'] != new_record['max_slices']:
+ self.api.plshell.UpdateSite(self.api.plauth, old_record['site_id'], {'max_slices' : new_record['max_slices']})
+ if old_record['max_slivers'] != new_record['max_slivers']:
+ self.api.plshell.UpdateSite(self.api.plauth, old_record['site_id'], {'max_slivers' : new_record['max_slivers']})
+ if peer:
+ self.api.plshell.BindObjectToPeer(self.api.plauth, 'site', old_record['site_id'], peer, old_record['peer_site_id'])
+ return 1
+
def sync_slice(self, old_record, new_record, peer):
if old_record['expires'] != new_record['expires']:
if peer:
self.api.plshell.UnBindObjectFromPeer(self.api.plauth, 'slice', old_record['slice_id'], peer)
- self.api.plshell.UpdateSlice(self.api.plauth, old_record['slice_id'], {'expires' : new_record['expires']})
+ self.api.plshell.UpdateSlice(self.api.plauth, old_record['slice_id'], {'expires' : new_record['expires']})
if peer:
self.api.plshell.BindObjectToPeer(self.api.plauth, 'slice', old_record['slice_id'], peer, old_record['peer_slice_id'])
return 1