[[PageOutline]] = The GENI API = The GENI API is an effort to enable interoperability within GENI through standard APIs. = The GENI Aggregate Manager API = The [wiki:GAPI_AM_API GENI AM API] defines a key interface of the [wiki:SliceFedArch SFA 2.0 Draft], providing a common interface to Aggregate Managers.The GENI AM API has been implemented by [http://www.planet-lab.org/ PlanetLab], [http://www.protogeni.net/trac/protogeni ProtoGENI], and [http://www.openflow.org/ OpenFlow]. Furthermore, through the sharing of root certificates, these implementations are now interoperable. Researchers with a ProtoGENI account can use !PlanetLab resources, and researchers with a !PlanetLab account can use ProtoGENI resources. Many !OpenFlow aggregates also trust the !PlanetLab and ProtoGENI root certificates. Initial implementations of the GENI AM API were demonstrated at GEC 8 and interoperability was demonstrated via the GEC 9 plenary session demos. Experimenters can begin designing and conducting experiments that take advantage of the broad variety of resources now available to them. Contact Mark Berman and the Experimentation Working Group with questions. = Implementations = The !PlanetLab implementation is live on PLC and PLE. ProtoGENI and PLC have also swapped root certificates, meaning that ProtoGENI users can use the API to reserve !PlanetLab resources at PLC. To run the GENI API on your MyPLC instance, simply install the latest release of SFA. Use the mailing list: devel@planet-lab.org for questions. The ProtoGENI implementation is live in Utah and Kentucky, and is part of emulab-stable. ProtoGENI has trusted the !PlanetLab root certificate (it is included in their standard certificate bundle that all ProtoGENI installs receive), meaning that !PlanetLab users can use the GENI API to reserve ProtoGENI resources. Contact the mailing list (geni-dev@emulab.net) with questions on using the API at ProtoGENI. The !OpenFlow team has built an aggregate manager called [https://openflow.stanford.edu/display/FOAM/Home FOAM], which is currently operating in all GENI aggregates that support OpenFlow. FOAM exposes the GENI API to reserve !OpenFlow slivers, and implements several support functions for aggregate administrators.To learn more about FOAM, see [https://openflow.stanford.edu/bugs/browse/FOAM the FOAM developer's site]. The ORCA team implements the GENI AM API in a plug-in controller for the ORCA [https://geni-orca.renci.org/trac/wiki/deploy-sm Slice Manager (SM)], which exports various XMLRPC interfaces to external tools. An SM running the XMLRPC controller exposes all resources visible to that SM as a single GENI aggregate. The native AM protocol in ORCA depends on features that are not yet available in the GENI AM API: it uses tickets and leases for resource management, supports multiple slivers per slice, and uses property lists to drive various configuration options. The GPO has developed a [http://trac.gpolab.bbn.com/gcf reference implementation of the GENI AM API], particularly demonstrating the use of certificates, credentials and credential verification. Also provided is a reference client, [wiki:Omni omni]. [wiki:Omni Omni] communicates with each clearinghouse in its 'native tongue', and then calls the Aggregate Manager API at any compliant Aggregate. These packages are available together for [http://www.gpolab.bbn.com/local-sw/ download]. Documentation is available on the [http://trac.gpolab.bbn.com/gcf gcf wiki] along with [http://trac.gpolab.bbn.com/gcf/wiki/GettingGcf source code] and [http://trac.gpolab.bbn.com/gcf/report/1 open tickets]. = API Evolution = The current version of the Aggregate Manager API is documented on the [wiki:GAPI_AM_API GENI Aggregate Manager API Wiki Page]. The API will evolve over time as issues, gaps, or new requirements are identified. Those changes are documented on the [wiki:GAPI_AM_API_DRAFT Draft API Changes wiki page]. The API will also be the subject of periodic sessions at GEC conferences, as needed. There was an AM API session at GEC12, whose [wiki:GEC12GeniAmAPI wiki page] contains slides and session notes. That session defined version 2 of the API. = Documentation = * [wiki:GAPI_AM_API GENI Aggregate Manager API Wiki Page] * [wiki:GAPI_AM_API_DRAFT GENI Aggregate Manager API Draft Changes wiki page] * [wiki:GeniAggregateManagerApiDoc GENI Aggregate Manager API Document] * [wiki:GeniApiIdentifiers GENI Identifiers] * [wiki:GeniApiCertificates GENI Certificates] * [wiki:GeniApiCredentials GENI Credentials] * [wiki:SliceFedArch SFA 2.0 Draft] * [https://www.protogeni.net/trac/protogeni/wiki/GeniAggregateManager The ProtoGENI API Implementation] = Software = * [http://trac.gpolab.bbn.com/gcf gcf reference implementation] * [http://trac.gpolab.bbn.com/gcf/wiki/Omni omni client] * [http://www.gpolab.bbn.com/local-sw/ Download Sample Code] = Useful Links = * [http://www.planet-lab.org PlanetLab] * [http://www.protogeni.net ProtoGENI] * [https://geni-orca.renci.org/trac/ ORCA-BEN] * [http://www.orbit-lab.org/ Orbit / OMF] * [https://openflow.stanford.edu/display/FOAM/Home FOAM] = Contact = Questions? Comments? Suggestions? Contact Tom Mitchell (tmitchell) or Aaron Helsinger (ahelsing) or Sarah Edwards (sedwards) at geni.net