-def get_version():
- version = {}
- 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 __get_hostnames(nodes):
- hostnames = []
- for node in nodes:
- hostnames.append(node.hostname)
- return hostnames
-
-def create_slice(api, slice_xrn, creds, rspec, users):
- """
- Create the sliver[s] (slice) at this aggregate.
- Verify HRN and initialize the slice record in PLC if necessary.
- """
-
- reg_objects = __get_registry_objects(slice_xrn, creds, users)
-
- hrn, type = urn_to_hrn(slice_xrn)
- peer = None
- slices = Slices(api)
- peer = slices.get_peer(hrn)
- sfa_peer = slices.get_sfa_peer(hrn)
- registry = api.registries[api.hrn]
- credential = api.getCredential()
- site_id, remote_site_id = slices.verify_site(registry, credential, hrn,
- peer, sfa_peer, reg_objects)
-
- slice = slices.verify_slice(registry, credential, hrn, site_id,
- remote_site_id, peer, sfa_peer, reg_objects)
-
- network = Network(api)
-
- slice = network.get_slice(api, hrn)
- current = __get_hostnames(slice.get_nodes())
-
- network.addRSpec(rspec, api.config.SFA_AGGREGATE_RSPEC_SCHEMA)
- request = __get_hostnames(network.nodesWithSlivers())
-
- # remove nodes not in rspec
- deleted_nodes = list(set(current).difference(request))
-
- # add nodes from rspec
- added_nodes = list(set(request).difference(current))
-
-
-
- if peer:
- api.plshell.UnBindObjectFromPeer(api.plauth, 'slice', slice.id, peer)
-
- api.plshell.AddSliceToNodes(api.plauth, slice.name, added_nodes)
- api.plshell.DeleteSliceFromNodes(api.plauth, slice.name, deleted_nodes)
-
- network.updateSliceTags()
-
- if peer:
- api.plshell.BindObjectToPeer(api.plauth, 'slice', slice.id, peer,
- slice.peer_id)
-
- # print network.toxml()
-
- return True
-