OpenStack Golang Client
NOTE(dtroyer) Apr 2015: This repo is under heavy revision as it is being revived.
openstack/golang-client
is an implementation of [OpenStack]
(http://www.openstack.org/) API client in Go language.
The code follows OpenStack licensing and uses its CI infrastructure
for hosting. It currently implements [Identity Service v2]
(http://docs.openstack.org/api/openstack-identity-service/2.0/content/)
and [Object Storage v1]
(http://docs.openstack.org/api/openstack-object-storage/1.0/content/).
The initial focus is on building a solid core REST Session and OpenStack
authentication on which to build the usual API interfaces. The architecture
if the Session
and authentication is similar to that used in the current
Python Keystone client library: The Session
object contains the HTTP
interface methods and an authentication object that provides access to
the auth token and service catalog.
Current State
Code maturity is considered experimental.
- The new Session object is functional and used by most of the code now.
- The examples work.
- The image tests work.
- The obejct store tests do not work.
- identity/v2/auth.go is now unused, will be kept around for a short time
for easier reference.
Installation
Use go get git.openstack.org/openstack/golang-client
. Or alternatively,
download or clone the repository.
The lib was developed and tested on go 1.3. No external dependencies, so far.
Examples
The examples directory contains examples for using the SDK using
real world working code. Each example starts with a two digit number followed
by a name (e.g., 00-authentication.go
). If you have a config.json
file in the
examples directory following the format of config.json.dist
the example can be
executed using go run [example name] setup.go
. Or, all the examples can be
executed running the script run-all.sh
from the examples directory.
Testing
There are two types of test files. The *_test.go
are standard
golang unit test files. The examples can be run as integration tests.
The tests were written against the [OpenStack API specifications]
(http://docs.openstack.org/api/api-specs.html).
The integration test were successful against the following:
If you use another provider and successfully completed the tests, please email
the maintainer(s) so your service can be mentioned here. Alternatively, if you
are a service provider and can arrange a free (temporary) account, a quick test
can be arranged.
License
Apache v2.
Contributing
The code repository utilizes the OpenStack CI infrastructure.
Please use the [recommended workflow]
(http://docs.openstack.org/infra/manual/developers.html#development-workflow). If you are not a member yet,
please consider joining as an [OpenStack contributor]
(http://docs.openstack.org/infra/manual/developers.html). If you have questions or
comments, you can email the maintainer(s).
Coding Style
The source code is automatically formatted to follow go fmt
by the [IDE]
(https://code.google.com/p/liteide/). And where pragmatic, the source code
follows this general [coding style]
(http://slamet.neocities.org/coding-style.html).