version['geni_api'] = 1
return version
-def delete_slice(api, xrn):
- hrn, type = urn_to_hrn(xrn)
- slicename = hrn_to_pl_slicename(hrn)
- slices = api.plshell.GetSlices(api.plauth, {'name': slicename})
- if not slices:
- return 1
- slice = slices[0]
-
- # determine if this is a peer slice
- peer = peers.get_peer(api, hrn)
- if peer:
- api.plshell.UnBindObjectFromPeer(api.plauth, 'slice', slice['slice_id'], peer)
- api.plshell.DeleteSliceFromNodes(api.plauth, slicename, slice['node_ids'])
- if peer:
- api.plshell.BindObjectToPeer(api.plauth, 'slice', slice['slice_id'], peer, slice['peer_slice_id'])
- 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 __get_hostnames(nodes):
hostnames = []
# add nodes from rspec
added_nodes = list(set(request).difference(current))
-
-
if peer:
api.plshell.UnBindObjectFromPeer(api.plauth, 'slice', slice.id, peer)
return 1
-def stop_slice(api, xrn):
+def stop_slice(api, xrn, creds):
hrn, type = urn_to_hrn(xrn)
slicename = hrn_to_pl_slicename(hrn)
slices = api.plshell.GetSlices(api.plauth, {'name': slicename}, ['slice_id'])
# XX not implemented at this interface
return 1
+def delete_slice(api, xrn, creds):
+ hrn, type = urn_to_hrn(xrn)
+ slicename = hrn_to_pl_slicename(hrn)
+ slices = api.plshell.GetSlices(api.plauth, {'name': slicename})
+ if not slices:
+ return 1
+ slice = slices[0]
+
+ # determine if this is a peer slice
+ peer = peers.get_peer(api, hrn)
+ if peer:
+ api.plshell.UnBindObjectFromPeer(api.plauth, 'slice', slice['slice_id'], peer)
+ api.plshell.DeleteSliceFromNodes(api.plauth, slicename, slice['node_ids'])
+ if peer:
+ api.plshell.BindObjectToPeer(api.plauth, 'slice', slice['slice_id'], peer, slice['peer_slice_id'])
+ return 1
+
def get_slices(api):
# look in cache first
if api.cache:
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_xrn, user_xrn, contexts):
- slice_hrn, type = urn_to_hrn(slice_xrn)
- user_hrn, type = urn_to_hrn(user_xrn)
- base_context = {'sfa':{'user':{'hrn':user_hrn}, 'slice':{'hrn':slice_hrn}}}
- return base_context
-
def main():
api = SfaAPI()
"""
version['geni_api'] = 1
return version
+def slice_status(api, slice_xrn, creds):
+ result = {}
+ result['geni_urn'] = slice_xrn
+ result['geni_status'] = 'unknown'
+ result['geni_resources'] = {}
+ return result
-def start_slice(api, xrn):
+def start_slice(api, xrn, creds):
hrn, type = urn_to_hrn(xrn)
slicename = hrn_to_pl_slicename(hrn)
api.nodemanger.Start(slicename)
-def stop_slice(api, xrn):
+def stop_slice(api, xrn, creds):
hrn, type = urn_to_hrn(xrn)
slicename = hrn_to_pl_slicename(hrn)
api.nodemanager.Stop(slicename)
-def delete_slice(api, xrn):
+def delete_slice(api, xrn, creds):
hrn, type = urn_to_hrn(xrn)
slicename = hrn_to_pl_slicename(hrn)
api.nodemanager.Destroy(slicename)
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, creds, rspec, users):
hrn, type = urn_to_hrn(xrn)
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.stop_slice, credential, xrn)
+ 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.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):
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])