from sfa.util.specdict import *
from sfa.util.faults import *
from sfa.util.storage import *
-from sfa.util.record import GeniRecord
+from sfa.util.record import SfaRecord
from sfa.util.policy import Policy
from sfa.util.prefixTree import prefixTree
from sfa.util.debug import log
self.load()
self.origin_hrn = origin_hrn
- def get_slivers(self, hrn, node=None):
+ def get_slivers(self, xrn, node=None):
+ hrn, type = urn_to_hrn(xrn)
slice_name = hrn_to_pl_slicename(hrn)
# XX Should we just call PLCAPI.GetSliceTicket(slice_name) instead
return slivers
- def get_peer(self, hrn):
+ def get_peer(self, xrn):
+ hrn, type = urn_to_hrn(xrn)
# Becaues of myplc federation, we first need to determine if this
# slice belongs to out local plc or a myplc peer. We will assume it
# is a local site, unless we find out otherwise
return peer
- def get_sfa_peer(self, hrn):
+ def get_sfa_peer(self, xrn):
+ hrn, type = urn_to_hrn(xrn)
+
# return the authority for this hrn or None if we are the authority
sfa_peer = None
slice_authority = get_authority(hrn)
def verify_site(self, registry, credential, slice_hrn, peer, sfa_peer):
+ import pdb
+ pdb.set_trace()
authority = get_authority(slice_hrn)
- site_records = registry.resolve(credential, authority)
+ authority_urn = hrn_to_urn(authority, 'authority')
+ site_records = registry.resolve(credential, authority_urn)
site = {}
for site_record in site_records:
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)
except: pass
- def create_slice_aggregate(self, hrn, rspec):
-
+ def create_slice_aggregate(self, xrn, rspec):
+ hrn, type = urn_to_hrn(xrn)
# Determine if this is a peer slice
peer = self.get_peer(hrn)
sfa_peer = self.get_sfa_peer(hrn)
return 1
+ def sync_site(self, old_record, new_record, peer):
+ if old_record['max_slices'] != new_record['max_slices']:
+ if peer:
+ self.api.plshell.UnBindObjectFromPeer(self.api.plauth, 'site', old_record['site_id'], peer)
+ self.api.plshell.UpdateSite(self.api.plauth, old_record['site_id'], {'max_slices' : new_record['max_slices']})
+ 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: