The OpenStack Python SDK is designed to improve developer experience by consolidating the various OpenStack python-* client libraries and command line interfaces into a unified, well designed, and user focused SDK ("Software Development Toolkit"). In this talk, we'd like to discuss what the Python SDK is, how it is designed, and how you can contribute to the project.
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 a consumer application requiring potentially 22 individual python-* clients to install, each with different APIs and nuances, it becomes increasingly difficult to consume OpenStack clouds.
The python-openstacksdk project 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.
There are three major components of the OpenStack Python SDK: communication, authentication, and resources. The communication component of the SDK loosely follows the OSI Model for abstract layers of a protocol stack. The authentication component is largely based on work done in the python-keystoneclient with legacy code removed. The resource component generally follows that of an ORM (Object-relational mapping).
The project s git repository is
https://github.com/stackforge/python-openstacksdk and we'd like to introduce the state of the project and discuss areas of greatest need for contribution.