Jump to: navigation, search

OpenStack-SDK-Go/Architecture

This is a proposed architecture for the Go SDK.

Directory/Package Layout

  • doc - contains documentation for the SDK. Not a Go package.
  • [service] - The name of a service such as compute or identity.
    • [version] - The implementation for a service would be in the version number directory.
  • utils or misc - utility functionality.

The root directory for the project would be the openstack package implementing a wrapper/helper library. The idea is that you can use high level functionality to easily get to a service or you have low level access if that is needed.

openstack package

The top level package would have the ability to get easy access to a service. For example,

   service := openstack.service('compute', 'region-name').(Compute)

In this case the openstack struct would retrieve Compute, using the service catalog name, for a particular region. From the service catalog it would know which version to retrieve.

Inside the the openstack struct would be a registry mapping services, version, and implementation. This can be overridden via extensions that are registered.