namespace module is gone, plxrn provides PL-specific translations
[sfa.git] / sfa / managers / registry_manager_pl.py
index c8d56bd..3835873 100644 (file)
@@ -1,18 +1,22 @@
 import types
 import time 
 import types
 import time 
+
+from sfa.util.faults import *
 from sfa.util.prefixTree import prefixTree
 from sfa.util.record import SfaRecord
 from sfa.util.table import SfaTable
 from sfa.util.record import SfaRecord
 from sfa.trust.gid import GID 
 from sfa.util.prefixTree import prefixTree
 from sfa.util.record import SfaRecord
 from sfa.util.table import SfaTable
 from sfa.util.record import SfaRecord
 from sfa.trust.gid import GID 
-from sfa.util.namespace import *
-from sfa.trust.credential import *
-from sfa.trust.certificate import *
-from sfa.util.faults import *
+from sfa.util.xrn import Xrn, get_leaf, get_authority, hrn_to_urn, urn_to_hrn
+from sfa.util.plxrn import hrn_to_pl_login_base
+from sfa.trust.credential import Credential
+from sfa.trust.certificate import Certificate, Keypair
+from sfa.trust.gid import create_uuid
 
 def get_version(api):
     version = {}
     version['geni_api'] = 1
 
 def get_version(api):
     version = {}
     version['geni_api'] = 1
+    version['sfa'] = 1
     return version
 
 def get_credential(api, xrn, type, is_self=False):
     return version
 
 def get_credential(api, xrn, type, is_self=False):
@@ -64,6 +68,8 @@ def get_credential(api, xrn, type, is_self=False):
     #new_cred.set_pubkey(object_gid.get_pubkey())
     new_cred.set_privileges(rights)
     new_cred.get_privileges().delegate_all_privileges(True)
     #new_cred.set_pubkey(object_gid.get_pubkey())
     new_cred.set_privileges(rights)
     new_cred.get_privileges().delegate_all_privileges(True)
+    if 'expires' in record:
+        new_cred.set_expiration(int(record['expires']))
     auth_kind = "authority,ma,sa"
     # Parent not necessary, verify with certs
     #new_cred.set_parent(api.auth.hierarchy.get_auth_cred(auth_hrn, kind=auth_kind))
     auth_kind = "authority,ma,sa"
     # Parent not necessary, verify with certs
     #new_cred.set_parent(api.auth.hierarchy.get_auth_cred(auth_hrn, kind=auth_kind))
@@ -79,24 +85,7 @@ def GetVersion():
     version['geni_api'] = 1
     return version
 
     version['geni_api'] = 1
     return version
 
-
-
-# The GENI resolve call
-def Resolve(api, xrn, creds):
-    records = resolve(api, xrn)
-    
-    if len(records) == 0:
-        return {}
-    
-    record = records[0]
-    if record.type == 'slice':
-        return {'geni_urn': xrn, 'geni_creator': " ".join(record.PI)}
-    if record.type == 'user':
-        return {'geni_urn': xrn, 'geni_certificate': record.gid}
-    
-    
-
-def resolve(api, xrns, type=None, origin_hrn=None, full=True):
+def resolve(api, xrns, type=None, full=True):
 
     # load all know registry names into a prefix tree and attempt to find
     # the longest matching prefix
 
     # load all know registry names into a prefix tree and attempt to find
     # the longest matching prefix
@@ -128,7 +117,7 @@ def resolve(api, xrns, type=None, origin_hrn=None, full=True):
         xrns = xrn_dict[registry_hrn]
         if registry_hrn != api.hrn:
             credential = api.getCredential()
         xrns = xrn_dict[registry_hrn]
         if registry_hrn != api.hrn:
             credential = api.getCredential()
-            peer_records = registries[registry_hrn].resolve(credential, xrns, origin_hrn)
+            peer_records = registries[registry_hrn].Resolve(xrns, credential)
             records.extend([SfaRecord(dict=record).as_dict() for record in peer_records])
 
     # try resolving the remaining unfound records at the local registry
             records.extend([SfaRecord(dict=record).as_dict() for record in peer_records])
 
     # try resolving the remaining unfound records at the local registry
@@ -173,7 +162,7 @@ def list(api, xrn, origin_hrn=None):
         record_list = registries[registry_hrn].list(credential, xrn, origin_hrn)
         records = [SfaRecord(dict=record).as_dict() for record in record_list]
     
         record_list = registries[registry_hrn].list(credential, xrn, origin_hrn)
         records = [SfaRecord(dict=record).as_dict() for record in record_list]
     
-    # if we still havnt found the record yet, try the local registry
+    # if we still have not found the record yet, try the local registry
     if not records:
         if not api.auth.hierarchy.auth_exists(hrn):
             raise MissingAuthority(hrn)
     if not records:
         if not api.auth.hierarchy.auth_exists(hrn):
             raise MissingAuthority(hrn)
@@ -379,20 +368,18 @@ def update(api, record_dict):
     
     return 1 
 
     
     return 1 
 
-def remove(api, xrn, type, origin_hrn=None):
-    # convert xrn to hrn     
-    if type:
-        hrn = urn_to_hrn(xrn)[0]
-    else:
-        hrn, type = urn_to_hrn(xrn)    
+# expecting an Xrn instance
+def remove(api, xrn, origin_hrn=None):
 
     table = SfaTable()
 
     table = SfaTable()
-    filter = {'hrn': hrn}
-    if type not in ['all', '*']:
+    filter = {'hrn': xrn.get_hrn()}
+    hrn=xrn.get_hrn()
+    type=xrn.get_type()
+    if type and type not in ['all', '*']:
         filter['type'] = type
         filter['type'] = type
+
     records = table.find(filter)
     records = table.find(filter)
-    if not records:
-        raise RecordNotFound(hrn)
+    if not records: raise RecordNotFound(hrn)
     record = records[0]
     type = record['type']
 
     record = records[0]
     type = record['type']