Software Development Kits
SDKs are a vital part of the OpenStack ecosystem, they help developers write applications for OpenStack and other clouds. For a list of the official OpenStack Python client libraries, see OpenStackClients.
- A set of language bindings that provide a language-level API for accessing OpenStack in a manner consistent with language standards.
- A Getting Started document that shows how to use the API to access OpenStack powered clouds.
- Detailed API reference documentation.
- Tested sample code that you can use as a "starter kit" for your own OpenStack applications.
- SDKs treat OpenStack as a blackbox and only interact with the REST/HTTP API.
- Must be sustainable.
- License must be compatible with Apache License v2.
What criteria is used to determine whether or not an SDK can be considered an OpenStack SDK has not been formalized. This has been initially discussed at the OpenStack Grizzly Summit (etherpad). Naturally the SDK will need to meet the definition above. In addition we thought the OpenStack Foundation may want to consider a compatibility test suite that will validate whether or not an SDK supports OpenStack.
These are items that could be used as criteria to define an SDK but themselves require further definition w.r.t. SDKs.
- Handle extensions in some way.
- Backwards compatibility.
- Compatibility with test suite.
Official OpenStack Clients
The OpenStackClients are the native Python bindings for the OpenStack APIs. They are used to implement the command-line interfaces (which ship with the library).
What follows is a list of known SDKs that support OpenStack. This is not a list of official OpenStack SDKs. What constitutes an official OpenStack SDK has not been determined. This is an area the needs more work (see Criteria section).
To date, SDKs that support OpenStack fall into two categories. SDKs that support multiple clouds including OpenStack (aka multi-cloud toolkits) and SDKs that support OpenStack only. If you're aware of any other SDKs, please add them to the lists below.
- Keystone and Swift libraries C library bindings to the OpenStack Keystone and Swift APIs.
- c-keystoneclient c-keystoneclient is a C-based client library for OpenStack Keystone authentication.
SWIFT_CPP_SDK is a C++ binding for accessing the Swift REST API.
- clj-openstack is a pure Clojure Binding for OpenStack Clouds
- lfe-openstack is a pure LFE (Lisp Flavored Erlang) language binding for OpenStack Clouds.
- Goose provides comprehensive Go binding to Openstack including nova, glance, keystone, swift, and neutron apis.
- Gophercloud provides a Go binding to OpenStack cloud APIs.
- golang-client is a proposed OpenStack project that is designed to improve the experience of OpenStack end-users who are using the Go programming language by providing them with everything they need to develop applications against OpenStack.
- swift implements Swift client on Go. Keystone v1,v2,v3 is supported
- Apache jclouds is an open source library that helps you get started in the cloud and utilizes your Java or Clojure development skills. The jclouds API gives you the freedom to use portable abstractions or cloud-specific features.
- OpenStack4j A fluent Java OpenStack API.
- OpenStack Java SDK is a Java binding for the OpenStack APIs.
- User Registration Service is a server side user registration service based on openstack-java-sdk.
- Java OpenStack Storage aka JOSS is a dedicated Java binding for accessing the Swift REST API.
- OpenStackIntegration is a Android Implementation based on openstack-java-sdk.
- js-openclient is a very opinionated core client which can be used in either Node.js or in the browser (browser support not yet complete) to communicate with a RESTful APIs, including but not limited to any OpenStack-compatible API.
- node-openstack-wrapper is a convenience wrapper for many of Openstack's common features with a focus on projects/tenants.
- OpenStack-SDK-DotNet is a software development kit (SDK) for working with OpenStack.
- OpenStack.NET is a .NET SDK for OpenStack.
- MarconiClient.NET is a .NET client for Marconi
- pkgcloud is a standard library for Node.js that abstracts away differences among multiple cloud providers.
- Net::OpenStack::Compute provides Perl bindings for the OpenStack Compute API. It also provides a command line tool oscompute for interacting with an OpenStack deployment.
- php-opencloud/openstack is a more recent project and is very similar to the rackspace/php-opencloud project. It is up to date with the latest openstack identity api (Keystone v3).
- rackspace/php-opencloud is a software development kit (SDK) to help developers using PHP to work with OpenStack and other open clouds.
These don't seem to be up to date anymore:
- ZendService_OpenStack is a PHP library that implements a previous version of the OpenStack APIs.
- OpenStack-SDK-PHP was a proposed OpenStack project that no longer is being developed.
- The OpenStackClients are the native Python bindings for the OpenStack APIs. They are used to implement the command-line interfaces (which ship with the library).
- The SDK-Development/PythonOpenStackSDK project is a proposed solution to offering an SDK that provides a single point of entry for consumers, and a base from which other tools can be built upon, such as command-line interfaces.
- pyrax should work with most OpenStack-based cloud deployments, though it specifically targets the Rackspace public cloud.
- Apache libcloud is a standard Python library that abstracts away differences among multiple cloud provider APIs.
- OpenStack Shade shade is a simple client library for operating OpenStack clouds.
- Aviator An elegantly designed OpenStack SDK for Ruby
- fog provides an accessible entry point and facilitates cross service compatibility.
- swift_client Small but powerful client to interact with OpenStack Swift
- nightcrawler_swift Like the X-Men nightcrawler this gem teleports your assets to a OpenStack Swift bucket/container
- swift-storage Simple Openstack Swift storage client.
- Warm Provides a template based solution to deploy environments.