golang-client/README.md
Davanum Srinivas ce3bd97613 Sanitize the package names
* All files in the same directory should belong to
  the same package
* Avoid xyz/xyz_v123 format (example volume/volume_v2)
* Added a doc.go so we can support a different import
  path later:
    https://golang.org/doc/go1.4#canonicalimports
* Drop the trailing ".git" in the imports

Change-Id: If4a880c62a2142f7015ed693e07af239bbbcf8e5
2017-03-07 13:39:59 -05:00

83 lines
3.2 KiB
Markdown

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](http://golang.org).
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:
- [DevStack](http://devstack.org)
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).