Replacing remove with Remove and update with Update
authorTony Mack <tmack@cs.princeton.edu>
Fri, 6 Aug 2010 21:57:54 +0000 (21:57 +0000)
committerTony Mack <tmack@cs.princeton.edu>
Fri, 6 Aug 2010 21:57:54 +0000 (21:57 +0000)
sfa/methods/GetCredential.py
sfa/methods/GetSelfCredential.py
sfa/methods/Remove.py
sfa/methods/Update.py
sfa/methods/remove.py
sfa/methods/update.py

index eb535ed..df6e868 100644 (file)
@@ -28,7 +28,8 @@ class GetCredential(Method):
         Mixed(Parameter(str, "Credential string"),
               Parameter(type([str]), "List of credentials")), 
         Parameter(str, "Human readable name (hrn or urn)"),
-        Parameter(str, "Object type")
+        Mixed(Parameter(str, "Record type"),
+              Parameter(None, "Type not specified")),
         ]
 
     returns = Parameter(str, "String representation of a credential object")
index fcee97c..a5c7d40 100644 (file)
@@ -26,7 +26,8 @@ class GetSelfCredential(Method):
     accepts = [
         Parameter(str, "certificate"),
         Parameter(str, "Human readable name (hrn or urn)"),
-        Parameter(str, "Object type"),
+        Mixed(Parameter(str, "Record type"),
+              Parameter(None, "Type not specified")),
         ]
 
     returns = Parameter(str, "String representation of a credential object")
index 6282877..82050b4 100644 (file)
@@ -8,7 +8,7 @@ from sfa.util.parameter import Parameter, Mixed
 from sfa.util.debug import log
 from sfa.trust.credential import Credential
 
-class remove(Method):
+class Remove(Method):
     """
     Remove an object from the registry. If the object represents a PLC object,
     then the PLC records will also be removed.
@@ -23,36 +23,30 @@ class remove(Method):
     interfaces = ['registry']
     
     accepts = [
-        Parameter(str, "Credential string"),
-        Parameter(str, "Record type"),
         Parameter(str, "Human readable name of slice to instantiate (hrn or urn)"),
-        Mixed(Parameter(str, "Human readable name of the original caller"),
-              Parameter(None, "Origin hrn not specified"))
+        Mixed(Parameter(str, "Credential string"),
+              Parameter(type([str]), "List of credentials")),
+        Mixed(Parameter(str, "Record type"),
+              Parameter(None, "Type not specified")),
         ]
 
     returns = Parameter(int, "1 if successful")
     
-    def call(self, cred, type, xrn, origin_hrn=None):
-        user_cred = Credential(string=cred)
-       
-        # convert xrn to hrn     
-        if type: 
+    def call(self, xrn, creds, type):
+        if not type:
             hrn = urn_to_hrn(xrn)[0]
         else: 
             hrn, type = urn_to_hrn(xrn)
-            
+        
+        # validate the cred
+        valid_creds = self.api.auth.checkCredentials(creds, "remove")
+        self.api.auth.verify_object_permission(hrn)
+
         #log the call
-        if not origin_hrn:
-            origin_hrn = user_cred.get_gid_caller().get_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))
 
-        # validate the cred
-        self.api.auth.check(cred, "remove")
-        self.api.auth.verify_object_permission(hrn)
-       
-        # 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.remove(self.api, xrn, type, origin_hrn) 
+
+        manager = self.api.get_interface_manager()
+
+        return manager.remove(self.api, xrn, type) 
index dcc5c70..de9dbb0 100644 (file)
@@ -8,7 +8,7 @@ from sfa.util.parameter import Parameter, Mixed
 from sfa.util.debug import log
 from sfa.trust.credential import Credential
 
-class update(Method):
+class Update(Method):
     """
     Update an object in the registry. Currently, this only updates the
     PLC information associated with the record. The SFA fields (name, type,
@@ -31,21 +31,13 @@ class update(Method):
 
     returns = Parameter(int, "1 if successful")
     
-    def call(self, cred, record_dict, origin_hrn=None):
-        user_cred = Credential(string=cred)
-    
-           #log the call
-        if not origin_hrn:
-            origin_hrn = user_cred.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, None, self.name))
-        
+    def call(self, record_dict, creds):
         # validate the cred
-        self.api.auth.check(cred, "update")
-        
-        # 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])
+        valid_creds = self.api.auth.checkCredentials(creds, "update")
+        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, None, self.name))
+       
+        manager = self.api.get_interface_manager()
         return manager.update(self.api, record_dict)
 
index 384b1cf..3419603 100644 (file)
@@ -5,11 +5,12 @@ from sfa.util.faults import *
 from sfa.util.namespace import *
 from sfa.util.method import Method
 from sfa.util.parameter import Parameter, Mixed
-from sfa.util.debug import log
-from sfa.trust.credential import Credential
+from sfa.methods.Remove import Remove
 
-class remove(Method):
+class remove(Remove):
     """
+    Deprecated. Use Remove instead.
+
     Remove an object from the registry. If the object represents a PLC object,
     then the PLC records will also be removed.
     
@@ -33,26 +34,5 @@ class remove(Method):
     returns = Parameter(int, "1 if successful")
     
     def call(self, cred, type, xrn, origin_hrn=None):
-        user_cred = Credential(string=cred)
-       
-        # convert xrn to hrn     
-        if type: 
-            hrn = urn_to_hrn(xrn)[0]
-        else: 
-            hrn, type = urn_to_hrn(xrn)
-            
-        #log the call
-        if not origin_hrn:
-            origin_hrn = user_cred.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))
-
-        # validate the cred
-        self.api.auth.check(cred, "remove")
-        self.api.auth.verify_object_permission(hrn)
-       
-        # 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.remove(self.api, xrn, type, origin_hrn) 
+        
+        return Remove.call(self, xrn, cred, type) 
index 2a1be73..861bb09 100644 (file)
@@ -5,11 +5,12 @@ import time
 from sfa.util.faults import *
 from sfa.util.method import Method
 from sfa.util.parameter import Parameter, Mixed
-from sfa.util.debug import log
-from sfa.trust.credential import Credential
+from sfa.methods.Update import Update
 
-class update(Method):
+class update(Update):
     """
+    Deprecated. Use Update instead.
+
     Update an object in the registry. Currently, this only updates the
     PLC information associated with the record. The SFA fields (name, type,
     GID) are fixed.
@@ -32,20 +33,6 @@ class update(Method):
     returns = Parameter(int, "1 if successful")
     
     def call(self, cred, record_dict, origin_hrn=None):
-        user_cred = Credential(string=cred)
-    
-           #log the call
-        if not origin_hrn:
-            origin_hrn = user_cred.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, None, self.name))
-        
-        # validate the cred
-        self.api.auth.check(cred, "update")
         
-        # 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.update(self.api, record_dict)
+        return Update.call(self, record_dict, cred)