From 835cb8f659765dde1b13c62b02162243898aa997 Mon Sep 17 00:00:00 2001 From: Josh Karlin Date: Thu, 15 Apr 2010 19:18:41 +0000 Subject: [PATCH] Added DeleteSliver --- sfa/managers/geni_am_pl.py | 27 ++++++++---------- sfa/methods/CreateSliver.py | 7 ++--- sfa/methods/DeleteSliver.py | 53 ++++++++++++++++++++++++++++++++++++ sfa/methods/GetVersion.py | 6 ++-- sfa/methods/ListResources.py | 3 -- sfa/methods/__init__.py | 1 + 6 files changed, 70 insertions(+), 27 deletions(-) create mode 100644 sfa/methods/DeleteSliver.py diff --git a/sfa/managers/geni_am_pl.py b/sfa/managers/geni_am_pl.py index 9c9b4e17..99b87cbe 100644 --- a/sfa/managers/geni_am_pl.py +++ b/sfa/managers/geni_am_pl.py @@ -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 diff --git a/sfa/methods/CreateSliver.py b/sfa/methods/CreateSliver.py index 28f644e9..48cf9803 100644 --- a/sfa/methods/CreateSliver.py +++ b/sfa/methods/CreateSliver.py @@ -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 index 00000000..aa45e04c --- /dev/null +++ b/sfa/methods/DeleteSliver.py @@ -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 '' + diff --git a/sfa/methods/GetVersion.py b/sfa/methods/GetVersion.py index afead1d8..f419d5a8 100644 --- a/sfa/methods/GetVersion.py +++ b/sfa/methods/GetVersion.py @@ -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): """ diff --git a/sfa/methods/ListResources.py b/sfa/methods/ListResources.py index 11c10f7e..a28fb0e1 100644 --- a/sfa/methods/ListResources.py +++ b/sfa/methods/ListResources.py @@ -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): """ diff --git a/sfa/methods/__init__.py b/sfa/methods/__init__.py index b9d83b2c..2fc9352b 100644 --- a/sfa/methods/__init__.py +++ b/sfa/methods/__init__.py @@ -30,4 +30,5 @@ GetVersion ListResources CreateSliver get_geni_aggregates +DeleteSliver """.split() -- 2.47.0