Jump to: navigation, search

SDK-Development/PythonOpenStackSDK

< SDK-Development
Revision as of 21:42, 24 January 2014 by Jesse Noller (talk | contribs) (Resources)

Summary

This is a proposed OpenStack project that is designed to improve the experience of OpenStack end-users by consolidating the various OpenStack python-* client back-ends and common code into a unified, well designed and user focused SDK ("Software Development Toolkit").

Detailed Description:

Currently, OpenStack's end user stories for both command-line and application developer consumers of OpenStack based clouds is confusing, fractured and inconsistent. This means that if a non-operator or OpenStack developer attempts to consume more than a single service from a deployed OpenStack system they face an uphill battle. With at least 22 individual python-* clients to install to build a consuming application, each with different APIs and nuances it becomes increasingly difficult to consume OpenStack clouds.

The Unified SDK proposes a new project with a single API namespace ("openstack") that would provide users with a single point of entry and series of supporting functions/methods from which to build applications and tools. As a side effect of this consolidation it becomes very easy to derive a unified CLI (such as openstackclient) or specialized per-service CLI tools. However, it is important that the definition of SDK (the compilation of the APIs and developer functions) and CLI tools stay separate as it is easy to conflate the idea of "clients" which is the state we have today.

Once the initial work to create the Unified SDK is complete; the next stage would be to collapse the individual python-* clients to use this as their logical backends.

The project is under active development, and will be moving to the regular OpenStack meeting schedule soon.

Audience

There are two key audiences for this project:

  • Application Developers: Application developers are not OpenStack Operators, or Developers - these are developers looking to consume a feature-rich OpenStack Cloud (multiple services). These Developers require a consistent, single namespace API ("Application Programming Interface") that allows them to build and deploy their application with minimal dependencies.
  • Command line consumers: These are similar to the Application Developers as their requirements are to use a consistent, single binary/script to interact with OpenStack Clouds - the commands they use should use consistent command line format, terminology and not require a large number of child dependencies to be installed onto the system.

Resources

Source code
Bug tracker https://launchpad.net/unifiedsdk
Blueprints
Developer doc
Etherpad Notes https://etherpad.openstack.org/p/unified-sdk-notes

Project Outline

Requirements

  • verified mocks/stubs for testing (all layers)
  • python-requests based REST client (built as "requests first")
  • Documentation must be assumption free.
  • No "Least Common Denominator": "the client (Layer 4) code for keystoneclient might be in openstack.api.auth but it would be able to be as advanced as it would like from an api standpoint - and whatever subset of functionality could be exposed in higher level abstractions (such as a CLI). Bonus is that horizon could potentially use this work.

Non-Requirements ("Things Not To Do")


IRC

The developers use IRC in #openstacksdk on freenode for development discussion.

Meetings

Frequently Asked Questions

Please see our FAQ for answers to common questions about the Unified SDK.