from lxml import etree
from StringIO import StringIO
from types import StringTypes
-from sfa.util.rspec import merge_rspecs
+from sfa.util.rspecHelper import merge_rspecs
from sfa.util.namespace import *
from sfa.util.rspec import *
from sfa.util.specdict import *
version['geni_api'] = 1
return version
-def delete_slice(api, xrn, origin_hrn=None):
- credential = api.getCredential()
- threads = ThreadManager()
- for aggregate in api.aggregates:
- server = api.aggregates[aggregate]
- threads.run(server.delete_slice, credential, xrn, origin_hrn)
- threads.get_results()
- return 1
+def slice_status(api, slice_xrn, creds ):
+ result = {}
+ result['geni_urn'] = slice_xrn
+ result['geni_status'] = 'unknown'
+ result['geni_resources'] = {}
+ return result
-def create_slice(api, xrn, rspec, origin_hrn=None):
+def create_slice(api, xrn, creds, rspec, users):
hrn, type = urn_to_hrn(xrn)
# Validate the RSpec against PlanetLab's schema --disabled for now
message = "%s (line %s)" % (error.message, error.line)
raise InvalidRSpec(message)
+ # XX
+ # XX TODO: Should try to use delegated credential first
+ # XX
cred = api.getCredential()
threads = ThreadManager()
for aggregate in api.aggregates:
if aggregate not in [api.auth.client_cred.get_gid_caller().get_hrn()]:
server = api.aggregates[aggregate]
# Just send entire RSpec to each aggregate
- threads.run(server.create_slice, cred, xrn, rspec, origin_hrn)
+ threads.run(server.CreateSliver, xrn, cred, rspec, users)
+
threads.get_results()
return 1
ticket.sign()
return ticket.save_to_string(save_parents=True)
-def start_slice(api, xrn):
+
+def delete_slice(api, xrn, origin_hrn=None):
+ # XX
+ # XX TODO: Should try to use delegated credential first
+ # XX
+ credential = api.getCredential()
+ threads = ThreadManager()
+ for aggregate in api.aggregates:
+ server = api.aggregates[aggregate]
+ threads.run(server.DeleteSliver, xrn, credential)
+ threads.get_results()
+ return 1
+
+def start_slice(api, xrn, creds):
+ # XX
+ # XX TODO: Should try to use delegated credential first
+ # XX
credential = api.getCredential()
threads = ThreadManager()
for aggregate in api.aggregates:
server = api.aggregates[aggregate]
- threads.run(server.stop_slice, credential, xrn)
+ threads.run(server.Start, xrn, credential)
threads.get_results()
return 1
-def stop_slice(api, xrn):
+def stop_slice(api, xrn, creds):
+ # XX
+ # XX TODO: Should try to use delegated credential first
+ # XX
credential = api.getCredential()
threads = ThreadManager()
for aggregate in api.aggregates:
server = api.aggregates[aggregate]
- threads.run(server.stop_slice, credential, xrn)
+ threads.run(server.Stop, xrn, credential)
threads.get_results()
return 1
def reset_slice(api, xrn):
- # XX not implemented at this interface
+ """
+ Not implemented
+ """
+ return 1
+
+def shutdown(api, xrn, creds):
+ """
+ Not implemented
+ """
+ return 1
+
+def status(api, xrn, creds):
+ """
+ Not implemented
+ """
return 1
def get_slices(api):
if aggregate not in [api.auth.client_cred.get_gid_caller().get_hrn()]:
# get the rspec from the aggregate
server = api.aggregates[aggregate]
- # XX
- # XX TODO: switch to ProtoGeni spec in next release. Give other
- # XX aggregtes a chacne to upgrade to this release before switching
- # XX
- # threads.run(server.ListResources, cred, options)
- threads.run(server.get_resources, cred, xrn, origin_hrn)
+ threads.run(server.ListResources, cred, options)
+ #threads.run(server.get_resources, cred, xrn, origin_hrn)
results = threads.get_results()
for request in root.iterfind("./request"):
rspec.append(deepcopy(request))
- print results
rspec = etree.tostring(rspec, xml_declaration=True, pretty_print=True)
# cache the result
if api.cache and not xrn:
return rspec
-"""
-Returns the request context required by sfatables. At some point, this
-mechanism should be changed to refer to "contexts", which is the
-information that sfatables is requesting. But for now, we just return
-the basic information needed in a dict.
-"""
-def fetch_context(slice_hrn, user_hrn, contexts):
- #slice_hrn = urn_to_hrn(slice_xrn)[0]
- #user_hrn = urn_to_hrn(user_xrn)[0]
- base_context = {'sfa':{'user':{'hrn':user_hrn}, 'slice':{'hrn':slice_hrn}}}
- return base_context
-
def main():
r = RSpec()
r.parseFile(sys.argv[1])