Added DeleteSliver
authorJosh Karlin <jkarlin@bbn.com>
Thu, 15 Apr 2010 19:18:41 +0000 (19:18 +0000)
committerJosh Karlin <jkarlin@bbn.com>
Thu, 15 Apr 2010 19:18:41 +0000 (19:18 +0000)
sfa/managers/geni_am_pl.py
sfa/methods/CreateSliver.py
sfa/methods/DeleteSliver.py [new file with mode: 0644]
sfa/methods/GetVersion.py
sfa/methods/ListResources.py
sfa/methods/__init__.py

index 9c9b4e1..99b87cb 100644 (file)
@@ -1,22 +1,10 @@
-import datetime
-import time
-import traceback
-import sys
-
-from types import StringTypes
 from sfa.util.namespace import *
 from sfa.util.rspec import *
 from sfa.util.specdict import *
 from sfa.util.faults import *
-from sfa.util.record import SfaRecord
-from sfa.util.policy import Policy
+
 from sfa.util.record import *
-from sfa.util.sfaticket import SfaTicket
-from sfa.server.registry import Registries
-from sfa.util.debug import log
-from sfa.plc.slices import Slices
-import sfa.plc.peers as peers
-from sfa.plc.api import SfaAPI
+
 from sfa.plc.slices import *
 from sfa.util.sfalogging import *
 import zlib
@@ -49,7 +37,7 @@ def ListResources(api, creds, options):
     return rspec
 
 
-def CreateSlice(api, slice_xrn, creds, rspec):
+def CreateSliver(api, slice_xrn, creds, rspec):
     manager_base = 'sfa.managers'
     mgr_type = 'pl'
     manager_module = manager_base + ".aggregate_manager_%s" % mgr_type
@@ -58,3 +46,12 @@ def CreateSlice(api, slice_xrn, creds, rspec):
     allocated = manager.create_slice(api, slice_xrn, rspec)
     return allocated
 
+def DeleteSliver(api, slice_xrn, creds):
+    manager_base = 'sfa.managers'
+    mgr_type = 'pl'
+    manager_module = manager_base + ".aggregate_manager_%s" % mgr_type
+    manager = __import__(manager_module, fromlist=[manager_base])
+
+    allocated = manager.delete_slice(api, slice_xrn)
+    return allocated
+    
\ No newline at end of file
index 28f644e..48cf980 100644 (file)
@@ -1,10 +1,7 @@
 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.trust.auth import Auth
-from sfa.trust.gid import GID
-from sfa.trust.certificate import Certificate
+from sfa.util.parameter import Parameter
 
 class CreateSliver(Method):
     """
@@ -51,7 +48,7 @@ class CreateSliver(Method):
             mgr_type = self.api.config.SFA_GENI_AGGREGATE_TYPE
             manager_module = manager_base + ".geni_am_%s" % mgr_type
             manager = __import__(manager_module, fromlist=[manager_base])
-            return manager.CreateSlice(self.api, slice_xrn, creds, rspec)
+            return manager.CreateSliver(self.api, slice_xrn, creds, rspec)
 
         return ''
     
diff --git a/sfa/methods/DeleteSliver.py b/sfa/methods/DeleteSliver.py
new file mode 100644 (file)
index 0000000..aa45e04
--- /dev/null
@@ -0,0 +1,53 @@
+from sfa.util.faults import *
+from sfa.util.namespace import *
+from sfa.util.method import Method
+from sfa.util.parameter import Parameter
+
+class DeleteSliver(Method):
+    """
+    Allocate resources to a slice.  This operation is expected to
+    start the allocated resources asynchornously after the operation
+    has successfully completed.  Callers can check on the status of
+    the resources using SliverStatus.
+
+    @param slice_urn (string) URN of slice to allocate to
+    @param credentials ([string]) of credentials
+    @param rspec (string) rspec to allocate
+    
+    """
+    interfaces = ['geni_am']
+    accepts = [
+        Parameter(str, "Slice URN"),
+        Parameter(type([str]), "List of credentials"),
+        ]
+    returns = Parameter(bool, "Success or Failure")
+
+    def call(self, slice_xrn, creds):
+        hrn, type = urn_to_hrn(slice_xrn)
+
+        self.api.logger.info("interface: %s\ttarget-hrn: %s\tcaller-creds: %s\tmethod-name: %s"%(self.api.interface, hrn, creds, self.name))
+
+        # Validate that at least one of the credentials is good enough
+        found = False
+        for cred in creds:
+            try:
+                self.api.auth.check(cred, 'deleteslice')
+                found = True
+                break
+            except:
+                continue
+            
+        if not found:
+            raise InsufficientRights('DeleteSliver: Credentials either did not verify, were no longer valid, or did not have appropriate privileges')
+            
+        
+        manager_base = 'sfa.managers'
+
+        if self.api.interface in ['geni_am']:
+            mgr_type = self.api.config.SFA_GENI_AGGREGATE_TYPE
+            manager_module = manager_base + ".geni_am_%s" % mgr_type
+            manager = __import__(manager_module, fromlist=[manager_base])
+            return manager.DeleteSliver(self.api, slice_xrn, creds)
+
+        return ''
+    
index afead1d..f419d5a 100644 (file)
@@ -1,10 +1,8 @@
 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.trust.auth import Auth
-from sfa.trust.gid import GID
-from sfa.trust.certificate import Certificate
+from sfa.util.parameter import Parameter
+
 
 class GetVersion(Method):
     """
index 11c10f7..a28fb0e 100644 (file)
@@ -2,9 +2,6 @@ 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.trust.auth import Auth
-from sfa.trust.gid import GID
-from sfa.trust.certificate import Certificate
 
 class ListResources(Method):
     """
index b9d83b2..2fc9352 100644 (file)
@@ -30,4 +30,5 @@ GetVersion
 ListResources
 CreateSliver
 get_geni_aggregates
+DeleteSliver
 """.split()