from sfa.util.namespace import *
from sfa.util.method import Method
from sfa.util.parameter import Parameter
+from sfa.server.aggregate import Aggregates
class SliverStatus(Method):
"""
Get the status of a sliver
@param slice_urn (string) URN of slice to allocate to
- @param credentials ([string]) of credentials
"""
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)
+
+ # Make sure that this is a geni_aggregate talking to us
+ geni_aggs = Aggregates(self.api, '/etc/sfa/geni_aggregates.xml')
+ if not hrn in [agg['hrn'] for agg in geni_aggs]:
+ raise SfaPermissionDenied("Only GENI Aggregates may make this call")
- self.api.logger.info("interface: %s\ttarget-hrn: %s\tcaller-creds: %s\tmethod-name: %s"%(self.api.interface, hrn, creds, self.name))
+ self.api.logger.info("interface: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, hrn, self.name))
- # Find the valid credentials
- ValidCreds = self.api.auth.checkCredentials(creds, 'sliverstatus', hrn)
-
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.SliverStatus(self.api, slice_xrn, ValidCreds)
+ return manager.SliverStatus(self.api, slice_xrn)
return ''
import sfa.util.xmlrpcprotocol as xmlrpcprotocol
import sfa.util.soapprotocol as soapprotocol
-
+
# GeniLight client support is optional
try:
from egeni.geniLight_client import *
required_fields = self.default_fields.keys()
if not isinstance(interfaces, list):
interfaces = [interfaces]
+
for interface in interfaces:
# make sure the required fields are present and not null
if not all([interface.get(key) for key in required_fields]):
continue
-
+
hrn, address, port = interface['hrn'], interface['addr'], interface['port']
url = 'http://%(address)s:%(port)s' % locals()
-
+
# check which client we should use
# sfa.util.xmlrpcprotocol is default
client_type = 'xmlrpcprotocol'
privilege_table = {"authority": ["register", "remove", "update", "resolve", "list", "getcredential", "*"],
"refresh": ["remove", "update"],
"resolve": ["resolve", "list", "getcredential", "getversion"],
- "sa": ["getticket", "redeemslice", "redeemticket", "createslice", "deleteslice", "updateslice",
+ "sa": ["getticket", "redeemslice", "redeemticket", "createslice", "deleteslice", "updateslice",
"getsliceresources", "getticket", "loanresources", "stopslice", "startslice", "renewsliver",
- "deleteslice", "resetslice", "listslices", "listnodes", "getpolicy", "createsliver", "sliverestatus"],
- "embed": ["getticket", "redeemslice", "redeemticket", "createslice", "createsliver", "deleteslice", "updateslice", "getsliceresources", "shutdown"],
+ "deleteslice", "resetslice", "listslices", "listnodes", "getpolicy", "sliverstatus"],
+ "embed": ["getticket", "redeemslice", "redeemticket", "createslice", "deleteslice", "updateslice", "sliverstatus", "getsliceresources", "shutdown"],
"bind": ["getticket", "loanresources", "redeemticket"],
- "control": ["updateslice", "createslice", "createsliver", "stopslice", "startslice", "deleteslice", "resetslice", "getsliceresources", "getgids"],
+ "control": ["updateslice", "createslice", "sliverstatus", "stopslice", "startslice", "deleteslice", "resetslice", "getsliceresources", "getgids"],
"info": ["listslices", "listnodes", "getpolicy"],
"ma": ["setbootstate", "getbootstate", "reboot", "getgids", "gettrustedcerts"],
"operator": ["gettrustedcerts", "getgids"]}