Skip to content
This repository has been archived by the owner on Aug 1, 2023. It is now read-only.

Add openstack/auth_yaml.go #609

Closed
wants to merge 114 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
d15e52b
Initial commit
jrperritt Aug 13, 2015
42bb6a0
change repo name to gopherlcoud
jrperritt Nov 16, 2015
ed1e74a
rackspace/gophercloud repo
jrperritt Jan 15, 2016
b101323
initial migration from rackspace/gophercloud
jrperritt Feb 11, 2016
27249f4
rename imports: rackspace/gophercloud -> gophercloud/gophercloud
Feb 18, 2016
0c8edb1
remove rackspace acceptance tests
Feb 18, 2016
c19dd15
change var name: STACK_TIME_FMT->StackFmtTime
Feb 18, 2016
c7a7983
bump gophercloud version in user agent tests
Feb 18, 2016
c2697cf
fix import in unit test to use openstack, not rackspace
Feb 18, 2016
994370e
add ServiceClient field to servers.CreateOpts
Feb 18, 2016
aaafa61
change *interface to interface and comment exported funcs in provider…
Feb 22, 2016
eb01563
add comments to exported funcs and fix EndpointErr unit test
Feb 22, 2016
e0f9e4f
error types in provider_client for http errors
Feb 22, 2016
7d5c8dc
coveralls badge
Feb 23, 2016
1239521
remove mapstructure from blockstorage,cdn,compute,db pkgs
Feb 24, 2016
c7d828e
default IsEmpty func for Pages
Feb 25, 2016
6682282
time formats for json unmarshaling
Feb 25, 2016
3c16647
remove mapstructure from identity,networking,objectstorage,orchestrat…
Feb 25, 2016
82583e7
better implementation for unmashaling times
Feb 25, 2016
31b6646
more consistent naming
Feb 26, 2016
1b22083
remove urls_test.go files
Feb 26, 2016
256208d
ResourceNotFound, MultipleResourcesFound error types
Feb 29, 2016
ed25894
blockstorage error types
Feb 29, 2016
376dfce
openstack errors
Feb 29, 2016
28256b3
provider_client error type fixes
Feb 29, 2016
4024a02
RequestOptsBuilder interface to allow custom request opts
Mar 1, 2016
a33da23
more error types; RequestOptsBuilder error fixes
Mar 2, 2016
f094fef
more error types for compute v2
Mar 7, 2016
763e592
db v1 error types
Mar 7, 2016
a3302e1
identity v2 error types
Mar 7, 2016
e3cb7e4
error types for networks v2
Mar 7, 2016
852278c
v1 object storage error types
Mar 9, 2016
8025197
pagination error types
Mar 9, 2016
58611da
orchestration v1 error types
Mar 9, 2016
1380826
another servers v2 error type
Mar 9, 2016
01618ee
first crack at BuildRequestBody function
Mar 9, 2016
c0dd8e5
add Microversion field to ServiceClient
Mar 10, 2016
90d31ce
move HTTP action methods to ServiceClient (for microversions)
Mar 10, 2016
554de82
update coveralls badge
Mar 10, 2016
226976e
travis.yml support
Mar 10, 2016
db0ae14
dsl struct tags; wip
Mar 13, 2016
e1c6ceb
struct tags for networking v2
Mar 14, 2016
fea9073
objectstorage v1 and orchestration v1 struct tags
Mar 15, 2016
77f79d2
only check exported fields
Mar 15, 2016
397ade6
fixes for failing unit tests after changes
Mar 15, 2016
3860b51
named return vars
Mar 29, 2016
2be387a
tmp commit, auth unit tests broken
Mar 31, 2016
29ae6b3
no naked returns in go; fix auth v3 unit tests
jrperritt Apr 13, 2016
64d0ef0
fix auth v2 unit tests
jrperritt Apr 13, 2016
fe61e3c
Merge pull request #1 from jrperritt/gophercloud-v2
jrperritt Apr 13, 2016
55fb584
doc updates
jrperritt Apr 13, 2016
25fefce
Merge pull request #2 from jrperritt/gophercloud-v2
jrperritt Apr 13, 2016
3026e84
remove rackspace-specific function in acceptance
jrperritt Apr 13, 2016
8ce5e28
fix import paths
jrperritt Apr 13, 2016
bd54bd9
make acceptance packages buildable
jrperritt Apr 13, 2016
fe69c72
Merge pull request #1 from jrperritt/master
jrperritt Apr 13, 2016
57edaf5
disclaimer about api potentially changing
jrperritt Apr 13, 2016
7965df9
Merge pull request #2 from gophercloud/add-disclaimer-to-readme
jrperritt Apr 13, 2016
075c532
add rackspace/gophercloud commits
jrperritt Apr 13, 2016
2f93a63
fixes after rackspace/gophercloud merge
jrperritt Apr 13, 2016
1a63d78
remove rackspace acceptance test
jrperritt Apr 13, 2016
47cee0c
add rackpsace/gophercloud commits
jrperritt Apr 13, 2016
bc54861
fixes after adding rackspace/gophercloud commits
jrperritt Apr 13, 2016
e0ba105
restore logic for icmp and null ports
jrperritt Apr 13, 2016
9cc3359
Merge pull request #3 from jrperritt/rackspace-gophercloud-commits
jrperritt Apr 13, 2016
3d96616
move unit tests into 'testing' directories
jrperritt Jun 6, 2016
9b7b9e6
merge lbaasv2, portsbinding, volumes v2; remove 'rackspace' refs; upd…
jrperritt Jul 12, 2016
94ae0eb
minor updates to CONTRIBUTING
jrperritt Jul 12, 2016
e3a4cbe
add doc.go files to make testing dirs buildable
jrperritt Jul 12, 2016
3c89267
remove refs to origin
jrperritt Jul 12, 2016
892e2e1
Merge pull request #4 from jrperritt/master
jrperritt Jul 12, 2016
6fb9d11
create migrating file
jrperritt Jul 12, 2016
792d51f
more naming specs for style guide
jrperritt Jul 18, 2016
3084644
Fix example commands to setup a new fork
carolynvs Jul 18, 2016
e7303c3
implement json.unmarshaler for flavor
jrperritt Jul 20, 2016
9977e51
Update v3 test to validate modification of auth options
carolynvs Jul 20, 2016
0093f73
Merge pull request #12 from jrperritt/7
jrperritt Jul 21, 2016
93b4a3c
allow EndpointOpts to search catalog for Identity clients
jrperritt Jul 21, 2016
6a4dcc7
remove mapstructure import
jrperritt Jul 21, 2016
1fa9250
implement json.Unmarshaler for Server
jrperritt Jul 22, 2016
e470686
Merge pull request #18 from jrperritt/11
jrperritt Jul 22, 2016
75801bc
Adding Vip port ID for loadbalancer - Issue #9
dagnello Jul 25, 2016
774bc77
Merge pull request #20 from dagnello/expose-port-id
jrperritt Jul 25, 2016
d41b926
Merge pull request #13 from carolynvs/fix-v3-authscope
jrperritt Jul 25, 2016
4b4827b
Merge pull request #14 from carolynvs/contributing-fixes
jrperritt Jul 25, 2016
8c592a4
Change Block Storage v1 Volume.CreatedAt Type
jtopjian Jul 26, 2016
b1ac8fd
Merge pull request #23 from jtopjian/volumev1-createdat-type
jrperritt Jul 26, 2016
b720d84
Common Compute Acceptance Test Modifications
jtopjian Jul 24, 2016
8349dfa
Flavor Acceptance Test Cleanup
jtopjian Jul 24, 2016
8831011
Image Acceptance Test Cleanup
jtopjian Jul 24, 2016
34368bd
Server Acceptance Test Cleanup
jtopjian Jul 24, 2016
6aa8ba0
Server Group Acceptance Test Cleanup
jtopjian Jul 24, 2016
c382078
Key Pairs Acceptance Test Cleanup
jtopjian Jul 25, 2016
3d12737
Compute Security Groups Acceptance Test Cleanup
jtopjian Jul 25, 2016
48209e3
Compute Floating IP Acceptance Test Cleanup
jtopjian Jul 25, 2016
5346c00
Tenant Networks Acceptance Test Cleanup
jtopjian Jul 25, 2016
924f701
Compute Networks Acceptance Test Cleanup
jtopjian Jul 25, 2016
59c5783
Extensions Acceptance Test Cleanup
jtopjian Jul 25, 2016
713e51a
QuotaSets Acceptance Test Cleanup
jtopjian Jul 25, 2016
aa8aff1
Default SecGroup Rules Acceptance Test Cleanup
jtopjian Jul 25, 2016
aa8e5e3
Boot From Volume Acceptance Test Cleanup
jtopjian Jul 25, 2016
ab883ea
Volume Attach Acceptance Test Cleanup
jtopjian Jul 26, 2016
0dd4487
Updated acceptance test README
jtopjian Jul 26, 2016
4b6ce84
Script to build devstack acceptance test environment
jtopjian Jul 26, 2016
0ce32ca
Added MIGRATING notes
jtopjian Jul 13, 2016
e361ee8
Added description of devstack acceptance test environment script
jtopjian Jul 26, 2016
6b427a5
Merge pull request #8 from jtopjian/compute-acc-fixes
jrperritt Jul 26, 2016
014999f
Merge pull request #17 from jrperritt/5
jrperritt Jul 26, 2016
0bc5578
Identity v3 Authentication With TrustID (#24)
jrperritt Jul 27, 2016
614b51d
Change Block Storage v1 Snapshots.CreatedAt Type (#31)
jtopjian Aug 3, 2016
c8834c1
create trusts.TokenExt response object (#29)
jrperritt Aug 3, 2016
81036a7
Use Correct Block Storage v2 Volume Attachment Attributes (#36)
jtopjian Aug 6, 2016
1c15e3f
Compute Acceptance Test Changes (#33)
jtopjian Aug 8, 2016
ef81c76
Add openstack/auth_yaml.go
raphink Aug 10, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
25 changes: 13 additions & 12 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
language: go
sudo: false
install:
- go get golang.org/x/crypto/ssh
- go get -v -tags 'fixtures acceptance' ./...
- go get golang.org/x/crypto/ssh
- go get -v -tags 'fixtures acceptance' ./...
go:
- 1.4
- 1.5
- tip
- 1.6
- tip
env:
- COVERALLS_TOKEN=2k7PTU3xa474Hymwgdj6XjqenNfGTNkO8
global:
- secure: "xSQsAG5wlL9emjbCdxzz/hYQsSpJ/bABO1kkbwMSISVcJ3Nk0u4ywF+LS4bgeOnwPfmFvNTOqVDu3RwEvMeWXSI76t1piCPcObutb2faKLVD/hLoAS76gYX+Z8yGWGHrSB7Do5vTPj1ERe2UljdrnsSeOXzoDwFxYRaZLX4bBOB4AyoGvRniil5QXPATiA1tsWX1VMicj8a4F8X+xeESzjt1Q5Iy31e7vkptu71bhvXCaoo5QhYwT+pLR9dN0S1b7Ro0KVvkRefmr1lUOSYd2e74h6Lc34tC1h3uYZCS4h47t7v5cOXvMNxinEj2C51RvbjvZI1RLVdkuAEJD1Iz4+Ote46nXbZ//6XRZMZz/YxQ13l7ux1PFjgEB6HAapmF5Xd8PRsgeTU9LRJxpiTJ3P5QJ3leS1va8qnziM5kYipj/Rn+V8g2ad/rgkRox9LSiR9VYZD2Pe45YCb1mTKSl2aIJnV7nkOqsShY5LNB4JZSg7xIffA+9YVDktw8dJlATjZqt7WvJJ49g6A61mIUV4C15q2JPGKTkZzDiG81NtmS7hFa7k0yaE2ELgYocbcuyUcAahhxntYTC0i23nJmEHVNiZmBO3u7EgpWe4KGVfumU+lt12tIn5b3dZRBBUk3QakKKozSK1QPHGpk/AZGrhu7H6l8to6IICKWtDcyMPQ="
before_install:
- go get github.com/axw/gocov/gocov
- go get github.com/mattn/goveralls
- go get github.com/pierrre/gotestcover
- if ! go get github.com/golang/tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi
- go get github.com/axw/gocov/gocov
- go get github.com/mattn/goveralls
- go get github.com/pierrre/gotestcover
- if ! go get github.com/golang/tools/cmd/cover; then go get golang.org/x/tools/cmd/cover;
fi
script:
- $HOME/gopath/bin/gotestcover -v -tags=fixtures -coverprofile=cover.out ./...
- $HOME/gopath/bin/gotestcover -v -tags=fixtures -coverprofile=cover.out ./...
after_success:
- $HOME/gopath/bin/goveralls -service=travis-ci -coverprofile=cover.out
- $HOME/gopath/bin/goveralls -service=travis-ci -coverprofile=cover.out
Empty file added CHANGELOG.md
Empty file.
94 changes: 27 additions & 67 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Contributing to gophercloud
# Contributing to Gophercloud

- [Getting started](#getting-started)
- [Tests](#tests)
- [Style guide](#basic-style-guide)
- [5 ways to get involved](#5-ways-to-get-involved)
- [3 ways to get involved](#5-ways-to-get-involved)

## Setting up your git workspace

Expand All @@ -14,19 +14,23 @@ way than just downloading it. Here are the basic installation instructions:
[README](/README.md#how-to-install) but add `-tags "fixtures acceptance"` to
get dependencies for unit and acceptance tests.

```bash
go get -tags "fixtures acceptance" github.com/gophercloud/gophercloud
```

2. Move into the directory that houses your local repository:

```bash
cd ${GOPATH}/src/github.com/rackspace/gophercloud
cd ${GOPATH}/src/github.com/gophercloud/gophercloud
```

3. Fork the `rackspace/gophercloud` repository and update your remote refs. You
3. Fork the `gophercloud/gophercloud` repository and update your remote refs. You
will need to rename the `origin` remote branch to `upstream`, and add your
fork as `origin` instead:

```bash
git remote rename origin upstream
git remote add origin [email protected]/<my_username>/gophercloud
git remote add origin [email protected]:<my_username>/gophercloud.git
```

4. Checkout the latest development branch:
Expand All @@ -50,12 +54,12 @@ environment variables for acceptance tests - this is documented in our

When working on a new or existing feature, testing will be the backbone of your
work since it helps uncover and prevent regressions in the codebase. There are
two types of test we use in gophercloud: unit tests and acceptance tests, which
two types of test we use in Gophercloud: unit tests and acceptance tests, which
are both described below.

### Unit tests

Unit tests are the fine-grained tests that establish and ensure the behaviour
Unit tests are the fine-grained tests that establish and ensure the behavior
of individual units of functionality. We usually test on an
operation-by-operation basis (an operation typically being an API action) with
the use of mocking to set up explicit expectations. Each operation will set up
Expand All @@ -69,7 +73,7 @@ process of testing expectations with assertions:
import (
"testing"

"github.com/rackspace/gophercloud/testhelper"
"github.com/gophercloud/gophercloud/testhelper"
)

func TestSomething(t *testing.T) {
Expand All @@ -95,8 +99,9 @@ Here is a truncated example of mocked HTTP responses:
import (
"testing"

th "github.com/rackspace/gophercloud/testhelper"
fake "github.com/rackspace/gophercloud/testhelper/client"
th "github.com/gophercloud/gophercloud/testhelper"
fake "github.com/gophercloud/gophercloud/testhelper/client"
"github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
)

func TestGet(t *testing.T) {
Expand Down Expand Up @@ -131,7 +136,7 @@ func TestGet(t *testing.T) {
})

// Call our API operation
network, err := Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract()
network, err := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").Extract()

// Assert no errors and equality
th.AssertNoErr(t, err)
Expand All @@ -142,7 +147,7 @@ func TestGet(t *testing.T) {
### Acceptance tests

As we've already mentioned, unit tests have a very narrow and confined focus -
they test small units of behaviour. Acceptance tests on the other hand have a
they test small units of behavior. Acceptance tests on the other hand have a
far larger scope: they are fully functional tests that test the entire API of a
service in one fell swoop. They don't care about unit isolation or mocking
expectations, they instead do a full run-through and consequently test how the
Expand Down Expand Up @@ -180,85 +185,40 @@ To run tests for a particular sub-package:
cd ./path/to/package && go test -tags fixtures .
```

## Basic style guide
## Style guide

We follow the standard formatting recommendations and language idioms set out
in the [Effective Go](https://golang.org/doc/effective_go.html) guide. It's
definitely worth reading - but the relevant sections are
[formatting](https://golang.org/doc/effective_go.html#formatting)
and [names](https://golang.org/doc/effective_go.html#names).
See [here](/STYLEGUIDE.md)

## 5 ways to get involved
## 3 ways to get involved

There are five main ways you can get involved in our open-source project, and
each is described briefly below. Once you've made up your mind and decided on
your fix, you will need to follow the same basic steps that all submissions are
required to adhere to:

1. [fork](https://help.github.com/articles/fork-a-repo/) the `rackspace/gophercloud` repository
1. [fork](https://help.github.com/articles/fork-a-repo/) the `gophercloud/gophercloud` repository
2. checkout a [new branch](https://github.com/Kunena/Kunena-Forum/wiki/Create-a-new-branch-with-git-and-manage-branches)
3. submit your branch as a [pull request](https://help.github.com/articles/creating-a-pull-request/)

### 1. Providing feedback

On of the easiest ways to get readily involved in our project is to let us know
about your experiences using our SDK. Feedback like this is incredibly useful
to us, because it allows us to refine and change features based on what our
users want and expect of us. There are a bunch of ways to get in contact! You
can [ping us](https://developer.rackspace.com/support/) via e-mail, talk to us on irc
(#rackspace-dev on freenode), [tweet us](https://twitter.com/rackspace), or
submit an issue on our [bug tracker](/issues). Things you might like to tell us
are:

* how easy was it to start using our SDK?
* did it meet your expectations? If not, why not?
* did our documentation help or hinder you?
* what could we improve in general?

### 2. Fixing bugs
### 1. Fixing bugs

If you want to start fixing open bugs, we'd really appreciate that! Bug fixing
is central to any project. The best way to get started is by heading to our
[bug tracker](https://github.com/rackspace/gophercloud/issues) and finding open
[bug tracker](https://github.com/gophercloud/gophercloud/issues) and finding open
bugs that you think nobody is working on. It might be useful to comment on the
thread to see the current state of the issue and if anybody has made any
breakthroughs on it so far.

### 3. Improving documentation

We have three forms of documentation:

* short README documents that briefly introduce a topic
* reference documentation on [godoc.org](http://godoc.org) that is automatically
generated from source code comments
* user documentation on our [homepage](http://gophercloud.io) that includes
getting started guides, installation guides and code samples
### 2. Improving documentation
The best source of documentation is on [godoc.org](http://godoc.org). It is
automatically generated from the source code.

If you feel that a certain section could be improved - whether it's to clarify
ambiguity, correct a technical mistake, or to fix a grammatical error - please
feel entitled to do so! We welcome doc pull requests with the same childlike
enthusiasm as any other contribution!

### 4. Optimizing existing features

If you would like to improve or optimize an existing feature, please be aware
that we adhere to [semantic versioning](http://semver.org) - which means that
we cannot introduce breaking changes to the API without a major version change
(v1.x -> v2.x). Making that leap is a big step, so we encourage contributors to
refactor rather than rewrite. Running tests will prevent regression and avoid
the possibility of breaking somebody's current implementation.

Another tip is to keep the focus of your work as small as possible - try not to
introduce a change that affects lots and lots of files because it introduces
added risk and increases the cognitive load on the reviewers checking your
work. Change-sets which are easily understood and will not negatively impact
users are more likely to be integrated quickly.

Lastly, if you're seeking to optimize a particular operation, you should try to
demonstrate a negative performance impact - perhaps using go's inbuilt
[benchmark capabilities](http://dave.cheney.net/2013/06/30/how-to-write-benchmarks-in-go).

### 5. Working on a new feature
###3. Working on a new feature

If you've found something we've left out, definitely feel free to start work on
introducing that feature. It's always useful to open an issue or submit a pull
Expand Down
13 changes: 0 additions & 13 deletions CONTRIBUTORS.md

This file was deleted.

32 changes: 32 additions & 0 deletions MIGRATING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Compute

## Floating IPs

* `github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/floatingip` is now `github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/floatingips`
* `floatingips.Associate` and `floatingips.Disassociate` have been removed.
* `floatingips.DisassociateOpts` is now required to disassociate a Floating IP.

## Security Groups

* `secgroups.AddServerToGroup` is now `secgroups.AddServer`.
* `secgroups.RemoveServerFromGroup` is now `secgroups.RemoveServer`.

## Servers

* `servers.Reboot` now requires a `servers.RebootOpts` struct:

```golang
rebootOpts := &servers.RebootOpts{
Type: servers.SoftReboot,
}
res := servers.Reboot(client, server.ID, rebootOpts)
```

# Identity

## V3

### Tokens

* `Token.ExpiresAt` is now of type `gophercloud.JSONRFC3339Milli` instead of
`time.Time`
55 changes: 17 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
# Gophercloud: an OpenStack SDK for Go
[![Build Status](https://travis-ci.org/rackspace/gophercloud.svg?branch=master)](https://travis-ci.org/rackspace/gophercloud) [![Coverage Status](https://coveralls.io/repos/rackspace/gophercloud/badge.png)](https://coveralls.io/r/rackspace/gophercloud)
[![Build Status](https://travis-ci.org/gophercloud/gophercloud.svg?branch=master)](https://travis-ci.org/gophercloud/gophercloud)
[![Coverage Status](https://coveralls.io/repos/github/gophercloud/gophercloud/badge.svg?branch=master)](https://coveralls.io/github/gophercloud/gophercloud?branch=master)

Gophercloud is a flexible SDK that allows you to consume and work with OpenStack
clouds in a simple and idiomatic way using golang. Many services are supported,
including Compute, Block Storage, Object Storage, Networking, and Identity.
Each service API is backed with getting started guides, code samples, reference
documentation, unit tests and acceptance tests.
Gophercloud is an OpenStack Go SDK.

## Useful links

* [Gophercloud homepage](http://gophercloud.io)
* [Reference documentation](http://godoc.org/github.com/rackspace/gophercloud)
* [Getting started guides](http://gophercloud.io/docs)
* [Reference documentation](http://godoc.org/github.com/gophercloud/gophercloud)
* [Effective Go](https://golang.org/doc/effective_go.html)

## How to install
Expand All @@ -30,9 +25,9 @@ your projects, such as [godep](https://github.com/tools/godep). Once this is set
Gophercloud as a dependency like so:

```bash
go get github.com/rackspace/gophercloud
go get github.com/gophercloud/gophercloud

# Edit your code to import relevant packages from "github.com/rackspace/gophercloud"
# Edit your code to import relevant packages from "github.com/gophercloud/gophercloud"

godep save ./...
```
Expand All @@ -54,7 +49,6 @@ You will need to retrieve the following:

* username
* password
* tenant name or tenant ID
* a valid Keystone identity URL

For users that have the OpenStack dashboard installed, there's a shortcut. If
Expand All @@ -73,17 +67,16 @@ explicitly, or tell Gophercloud to use environment variables:

```go
import (
"github.com/rackspace/gophercloud"
"github.com/rackspace/gophercloud/openstack"
"github.com/rackspace/gophercloud/openstack/utils"
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/openstack"
"github.com/gophercloud/gophercloud/openstack/utils"
)

// Option 1: Pass in the values yourself
opts := gophercloud.AuthOptions{
IdentityEndpoint: "https://my-openstack.com:5000/v2.0",
Username: "{username}",
Password: "{password}",
TenantID: "{tenant_id}",
}

// Option 2: Use a utility function to retrieve all your environment variables
Expand Down Expand Up @@ -119,7 +112,7 @@ in the flavor ID (hardware specification) and image ID (operating system) we're
interested in:

```go
import "github.com/rackspace/gophercloud/openstack/compute/v2/servers"
import "github.com/gophercloud/gophercloud/openstack/compute/v2/servers"

server, err := servers.Create(client, servers.CreateOpts{
Name: "My new server!",
Expand All @@ -128,33 +121,19 @@ server, err := servers.Create(client, servers.CreateOpts{
}).Extract()
```

If you are unsure about what images and flavors are, you can read our [Compute
Getting Started guide](http://gophercloud.io/docs/compute). The above code
sample creates a new server with the parameters, and embodies the new resource
in the `server` variable (a
[`servers.Server`](http://godoc.org/github.com/rackspace/gophercloud) struct).
The above code sample creates a new server with the parameters, and embodies the
new resource in the `server` variable (a
[`servers.Server`](http://godoc.org/github.com/gophercloud/gophercloud) struct).

### Next steps
## Backwards-Compatibility Guarantees

Cool! You've handled authentication, got your `ProviderClient` and provisioned
a new server. You're now ready to use more OpenStack services.

* [Getting started with Compute](http://gophercloud.io/docs/compute)
* [Getting started with Object Storage](http://gophercloud.io/docs/object-storage)
* [Getting started with Networking](http://gophercloud.io/docs/networking)
* [Getting started with Block Storage](http://gophercloud.io/docs/block-storage)
* [Getting started with Identity](http://gophercloud.io/docs/identity)
None. Vendor it and write tests covering the parts you use.

## Contributing

Engaging the community and lowering barriers for contributors is something we
care a lot about. For this reason, we've taken the time to write a [contributing
guide](./CONTRIBUTING.md) for folks interested in getting involved in our project.
If you're not sure how you can get involved, feel free to submit an issue or
[contact us](https://developer.rackspace.com/support/). You don't need to be a
Go expert - all members of the community are welcome!
See the [contributing guide](./CONTRIBUTING.md).

## Help and feedback

If you're struggling with something or have spotted a potential bug, feel free
to submit an issue to our [bug tracker](/issues) or [contact us directly](https://developer.rackspace.com/support/).
to submit an issue to our [bug tracker](/issues).
Loading