import sfa.planetlab.peers as peers
from sfa.planetlab.plaggregate import PlAggregate
from sfa.planetlab.plslices import PlSlices
-from sfa.planetlab.plxrn import PlXrn, slicename_to_hrn, hostname_to_hrn, hrn_to_pl_slicename, xrn_to_hostname, xrn_to_ext_slicename, top_auth
+from sfa.planetlab.plxrn import PlXrn, slicename_to_hrn, hostname_to_hrn, hrn_to_pl_slicename, xrn_to_hostname, top_auth, hash_loginbase
def list_to_dict(recs, key):
if 'max_slices' not in pl_record:
pl_record['max_slices']=2
pointer = self.shell.AddSite(pl_record)
+ self.shell.SetSiteHrn(int(pointer), hrn)
else:
pointer = sites[0]['site_id']
slices = self.shell.GetSlices([pl_record['name']])
if not slices:
pointer = self.shell.AddSlice(pl_record)
+ self.shell.SetSliceHrn(int(pointer), hrn)
else:
pointer = slices[0]['slice_id']
can_add = ['first_name', 'last_name', 'title','email', 'password', 'phone', 'url', 'bio']
add_person_dict=dict ( [ (k,sfa_record[k]) for k in sfa_record if k in can_add ] )
pointer = self.shell.AddPerson(add_person_dict)
+ self.shell.SetPersonHrn(int(pointer), hrn)
else:
pointer = persons[0]['person_id']
nodes = self.shell.GetNodes([pl_record['hostname']])
if not nodes:
pointer = self.shell.AddNode(login_base, pl_record)
+ self.shell.SetNodeHrn(int(pointer), hrn)
else:
pointer = nodes[0]['node_id']
if (type == "authority"):
self.shell.UpdateSite(pointer, new_sfa_record)
+ self.shell.SetSiteHrn(pointer, hrn)
elif type == "slice":
pl_record=self.sfa_fields_to_pl_fields(type, hrn, new_sfa_record)
if 'name' in pl_record:
pl_record.pop('name')
self.shell.UpdateSlice(pointer, pl_record)
+ self.shell.SetSliceHrn(pointer, hrn)
elif type == "user":
# SMBAKER: UpdatePerson only allows a limited set of fields to be
if 'email' in update_fields and not update_fields['email']:
del update_fields['email']
self.shell.UpdatePerson(pointer, update_fields)
+ self.shell.SetPersonHrn(pointer, hrn)
if new_key:
# must check this key against the previous one if it exists
# set the 'enabled' tag to 0
def shutdown (self, xrn, options={}):
- hrn = urn_to_hrn(xrn)
+ hrn, _ = urn_to_hrn(xrn)
top_auth_hrn = top_auth(hrn)
- if top_auth_hrn == self.hrn:
- slicename = hrn_to_pl_slicename(hrn)
+ site_hrn = '.'.join(hrn.split('.')[:-1])
+ slice_part = hrn.split('.')[-1]
+ if top_auth_hrn == self.driver.hrn:
+ login_base = slice_hrn.split('.')[-2][:12]
else:
- slicename = xrn_to_ext_slicename(hrn)
+ login_base = hash_loginbase(site_hrn)
+
+ slicename = '_'.join([login_base, slice_part])
+
slices = self.shell.GetSlices({'name': slicename}, ['slice_id'])
if not slices:
raise RecordNotFound(slice_hrn)