more consistency between API method names and corresponding manager implementation
[sfa.git] / sfa / methods / Register.py
index 00560f7..2d9cbfd 100644 (file)
@@ -1,18 +1,8 @@
-### $Id: register.py 16477 2010-01-05 16:31:37Z thierry $
-### $URL: https://svn.planet-lab.org/svn/sfa/trunk/sfa/methods/register.py $
-
-from sfa.trust.certificate import Keypair, convert_public_key
-from sfa.trust.gid import *
-from sfa.util.faults import *
 from sfa.util.method import Method
 from sfa.util.parameter import Parameter, Mixed
 from sfa.util.method import Method
 from sfa.util.parameter import Parameter, Mixed
-from sfa.util.record import SfaRecord
-from sfa.util.debug import log
-from sfa.trust.auth import Auth
-from sfa.trust.gid import create_uuid
 from sfa.trust.credential import Credential
 
 from sfa.trust.credential import Credential
 
-class register(Method):
+class Register(Method):
     """
     Register an object with the registry. In addition to being stored in the
     SFA database, the appropriate records will also be created in the
     """
     Register an object with the registry. In addition to being stored in the
     SFA database, the appropriate records will also be created in the
@@ -27,29 +17,23 @@ class register(Method):
     interfaces = ['registry']
     
     accepts = [
     interfaces = ['registry']
     
     accepts = [
-        Parameter(str, "Credential string"),
-        Parameter(dict, "Record dictionary containing record fields")
+        Parameter(dict, "Record dictionary containing record fields"),
+        Mixed(Parameter(str, "Credential string"),
+              Parameter(type([str]), "List of credentials")),
         ]
 
     returns = Parameter(int, "String representation of gid object")
     
         ]
 
     returns = Parameter(int, "String representation of gid object")
     
-    def call(self, cred, record, origin_hrn=None):
-        user_cred = Credential(string=cred)
+    def call(self, record, creds):
+        # validate cred    
+        valid_creds = self.api.auth.checkCredentials(creds, 'register')
+        
+        # verify permissions
+        hrn = record.get('hrn', '')
+        self.api.auth.verify_object_permission(hrn)
 
         #log the call
 
         #log the call
-        if not origin_hrn:
-            origin_hrn = user_cred.get_gid_caller().get_hrn()
-        hrn = None
-        if 'hrn' in record:
-            hrn = record['hrn']
+        origin_hrn = Credential(string=valid_creds[0]).get_gid_caller().get_hrn()
         self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, hrn, self.name))
         
         self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, hrn, self.name))
         
-        # validate the cred
-        self.api.auth.check(cred, "register")
-
-        #send the call to the right manager
-        manager_base = 'sfa.managers'
-        mgr_type = self.api.config.SFA_REGISTRY_TYPE
-        manager_module = manager_base + ".registry_manager_%s" % mgr_type
-        manager = __import__(manager_module, fromlist=[manager_base])
-        return manager.register(self.api, record)
+        return self.api.manager.Register(self.api, record)