provider/openstack BlockStorage v1 availability_zone Fix (#11949)

* vendor: Updating Gophercloud

* provider/openstack: Fix upstream AvailabilityZone field

This commit complements an upstream fix where "availability" was being sent instead of
"availability_zone".
This commit is contained in:
Joe Topjian 2017-02-15 02:37:05 -07:00 committed by Paul Stack
parent 1c3d812d94
commit 47bf2eff09
7 changed files with 155 additions and 128 deletions

View File

@ -112,15 +112,15 @@ func resourceBlockStorageVolumeV1Create(d *schema.ResourceData, meta interface{}
}
createOpts := &volumes.CreateOpts{
Description: d.Get("description").(string),
Availability: d.Get("availability_zone").(string),
Name: d.Get("name").(string),
Size: d.Get("size").(int),
SnapshotID: d.Get("snapshot_id").(string),
SourceVolID: d.Get("source_vol_id").(string),
ImageID: d.Get("image_id").(string),
VolumeType: d.Get("volume_type").(string),
Metadata: resourceContainerMetadataV2(d),
Description: d.Get("description").(string),
AvailabilityZone: d.Get("availability_zone").(string),
Name: d.Get("name").(string),
Size: d.Get("size").(int),
SnapshotID: d.Get("snapshot_id").(string),
SourceVolID: d.Get("source_vol_id").(string),
ImageID: d.Get("image_id").(string),
VolumeType: d.Get("volume_type").(string),
Metadata: resourceContainerMetadataV2(d),
}
log.Printf("[DEBUG] Create Options: %#v", createOpts)

View File

@ -162,7 +162,8 @@ const testAccBlockStorageV1Volume_basic = `
resource "openstack_blockstorage_volume_v1" "volume_1" {
name = "volume_1"
description = "first test volume"
metadata{
availability_zone = "nova"
metadata {
foo = "bar"
}
size = 1
@ -173,7 +174,7 @@ const testAccBlockStorageV1Volume_update = `
resource "openstack_blockstorage_volume_v1" "volume_1" {
name = "volume_1-updated"
description = "first test volume"
metadata{
metadata {
foo = "bar"
}
size = 1

View File

@ -20,6 +20,12 @@
- A PR that is in-progress should have `[wip]` in front of the PR's title. When
ready for review, remove the `[wip]` and ping a core contributor with an `@`.
- Forcing PRs to be small can have the effect of users submitting PRs in a hierarchical chain, with
one depending on the next. If a PR depends on another one, it should have a [Pending #PRNUM]
prefix in the PR title. In addition, it will be the PR submitter's responsibility to remove the
[Pending #PRNUM] tag once the PR has been updated with the merged, dependent PR. That will
let reviewers know it is ready to review.
- A PR should be small. Even if you intend on implementing an entire
service, a PR should only be one route of that service
(e.g. create server or get server, but not both).

View File

@ -15,15 +15,15 @@ type CreateOptsBuilder interface {
// the volumes.Create function. For more information about these parameters,
// see the Volume object.
type CreateOpts struct {
Size int `json:"size" required:"true"`
Availability string `json:"availability,omitempty"`
Description string `json:"display_description,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
Name string `json:"display_name,omitempty"`
SnapshotID string `json:"snapshot_id,omitempty"`
SourceVolID string `json:"source_volid,omitempty"`
ImageID string `json:"imageRef,omitempty"`
VolumeType string `json:"volume_type,omitempty"`
Size int `json:"size" required:"true"`
AvailabilityZone string `json:"availability_zone,omitempty"`
Description string `json:"display_description,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
Name string `json:"display_name,omitempty"`
SnapshotID string `json:"snapshot_id,omitempty"`
SourceVolID string `json:"source_volid,omitempty"`
ImageID string `json:"imageRef,omitempty"`
VolumeType string `json:"volume_type,omitempty"`
}
// ToVolumeCreateMap assembles a request body based on the contents of a

View File

@ -119,8 +119,8 @@ type UpdateOpts struct {
FixedIPs interface{} `json:"fixed_ips,omitempty"`
DeviceID string `json:"device_id,omitempty"`
DeviceOwner string `json:"device_owner,omitempty"`
SecurityGroups []string `json:"security_groups,omitempty"`
AllowedAddressPairs []AddressPair `json:"allowed_address_pairs,omitempty"`
SecurityGroups []string `json:"security_groups"`
AllowedAddressPairs []AddressPair `json:"allowed_address_pairs"`
}
// ToPortUpdateMap casts an UpdateOpts struct to a map.

View File

@ -1,7 +1,7 @@
package gophercloud
import (
"errors"
"fmt"
"net/url"
"path/filepath"
"strings"
@ -9,27 +9,47 @@ import (
)
// WaitFor polls a predicate function, once per second, up to a timeout limit.
// It usually does this to wait for a resource to transition to a certain state.
// This is useful to wait for a resource to transition to a certain state.
// To handle situations when the predicate might hang indefinitely, the
// predicate will be prematurely cancelled after the timeout.
// Resource packages will wrap this in a more convenient function that's
// specific to a certain resource, but it can also be useful on its own.
func WaitFor(timeout int, predicate func() (bool, error)) error {
start := time.Now().Second()
type WaitForResult struct {
Success bool
Error error
}
start := time.Now().Unix()
for {
// Force a 1s sleep
// If a timeout is set, and that's been exceeded, shut it down.
if timeout >= 0 && time.Now().Unix()-start >= int64(timeout) {
return fmt.Errorf("A timeout occurred")
}
time.Sleep(1 * time.Second)
// If a timeout is set, and that's been exceeded, shut it down
if timeout >= 0 && time.Now().Second()-start >= timeout {
return errors.New("A timeout occurred")
}
var result WaitForResult
ch := make(chan bool, 1)
go func() {
defer close(ch)
satisfied, err := predicate()
result.Success = satisfied
result.Error = err
}()
// Execute the function
satisfied, err := predicate()
if err != nil {
return err
}
if satisfied {
return nil
select {
case <-ch:
if result.Error != nil {
return result.Error
}
if result.Success {
return nil
}
// If the predicate has not finished by the timeout, cancel it.
case <-time.After(time.Duration(timeout) * time.Second):
return fmt.Errorf("A timeout occurred")
}
}
}

182
vendor/vendor.json vendored
View File

@ -1314,268 +1314,268 @@
"revisionTime": "2016-11-07T00:24:06Z"
},
{
"checksumSHA1": "t8C0jff5naj/d2EYrUqdKus8lGY=",
"checksumSHA1": "xKB/9qxVhWxAERkjZLYfuUBR4P8=",
"path": "github.com/gophercloud/gophercloud",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "S3zTth9INyj1RfyHkQEvJAvRWvw=",
"path": "github.com/gophercloud/gophercloud/openstack",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "XAKLUSwXSMGtbp+U874qU4MzT/A=",
"path": "github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "PFD8SEqhArAy/6jRbIlYb5lp64k=",
"checksumSHA1": "9DTfNt/B4aZWXEmTNqXU5rNrrDc=",
"path": "github.com/gophercloud/gophercloud/openstack/blockstorage/v1/volumes",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "B4IXSmq364HcBruvvV0QjDFxZgc=",
"path": "github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "w2wHF5eEBE89ZYlkS9GAJsSIq9U=",
"path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/bootfromvolume",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "e7AW3YDVYJPKUjpqsB4AL9RRlTw=",
"path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/floatingips",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "RWwUliHD65cWApdEo4ckOcPSArg=",
"path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/keypairs",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "tOmntqlmZ/r8aObUChNloddLhwk=",
"path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/schedulerhints",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "jNrUTQf+9dYfaD7YqvKwC+kGvyY=",
"path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/secgroups",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "ci4gzd7Uy9JC4NcQ2ms19pjtW6s=",
"path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/servergroups",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "qBpGbX7LQMPATdO8XyQmU7IXDiI=",
"path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/startstop",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "5JuziAp9BSRA/z+8pTjVLTWeTw4=",
"path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/tenantnetworks",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "2VNgU0F9PDax5VKClvMLmbzuksw=",
"path": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/volumeattach",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "a9xDFPigDjHlPlthknKlBduGvKY=",
"path": "github.com/gophercloud/gophercloud/openstack/compute/v2/flavors",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "UGeqrw3KdPNRwDxl315MAYyy/uY=",
"path": "github.com/gophercloud/gophercloud/openstack/compute/v2/images",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "S8zR7Y8Yf6dz5+m5jyWYu5ar+vk=",
"path": "github.com/gophercloud/gophercloud/openstack/compute/v2/servers",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "1sVqsZBZBNhDXLY9XzjMkcOkcbg=",
"path": "github.com/gophercloud/gophercloud/openstack/identity/v2/tenants",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "AvUU5En9YpG25iLlcAPDgcQODjI=",
"path": "github.com/gophercloud/gophercloud/openstack/identity/v2/tokens",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "ZKyEbJuIlvuZ9aUushINCXJHF4w=",
"path": "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "aTHxjMlfNXFJ3l2TZyvIwqt/3kM=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/firewalls",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "14ZhP0wE/WCL/6oujcML755AaH4=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/policies",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "sYET5A7WTyJ7dpuxR/VXYoReldw=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas/rules",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "0UcU/7oQbhlnYKoT+I+T403U8MQ=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "Mjt7GwFygyqPxygY8xZZnUasHmk=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "mCTz2rnyVfhjJ+AD/WihCNcYWiY=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/members",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "B2mtHvADREtFLam72wyijyQh/Ds=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/monitors",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "pTr22CKKJ26yvhgd0SRxFF4jkEs=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/pools",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "E7/Z7g5O9o+ge+8YklheTpKgWNw=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/vips",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "mhpwj5tPv7Uw5aUfC55fhLPBcKo=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/listeners",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "5efJz6UH7JCFeav5ZCCzicXCFTU=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/loadbalancers",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "TVFgBTz7B6bb1R4TWdgAkbE1/fk=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/monitors",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "xirjw9vJIN6rmkT3T56bfPfOLUM=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/pools",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "FKwSMrpQf7b3TcCOQfh+ovoBShA=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/groups",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "CsS/kI3VeLcSHzMKviFVDwqwgvk=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/rules",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "zKOhFTL5BDZPMC58ZzZkryjskno=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/networks",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "BE+CO3QrEGpIgv3Ee2ANZp1WtSo=",
"checksumSHA1": "Lx257Qaf6y2weNwHTx6lm3OY7a8=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/ports",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "wY0MY7RpX0Z2Y0rMmrAuYS6cHYA=",
"path": "github.com/gophercloud/gophercloud/openstack/networking/v2/subnets",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "LtdQKIKKRKe6FOGdBvrBz/bg1Gc=",
"path": "github.com/gophercloud/gophercloud/openstack/objectstorage/v1/accounts",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "1lwXcRrM5A7iCfekbn3bpfNLe3g=",
"path": "github.com/gophercloud/gophercloud/openstack/objectstorage/v1/containers",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "dotTh+ZsNiyv8e9Z4e0chPEZDKE=",
"path": "github.com/gophercloud/gophercloud/openstack/objectstorage/v1/objects",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "roxPPVwS2CjJhf0CApHNQxAX7EA=",
"path": "github.com/gophercloud/gophercloud/openstack/objectstorage/v1/swauth",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "TDOZnaS0TO0NirpxV1QwPerAQTY=",
"path": "github.com/gophercloud/gophercloud/openstack/utils",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "pmpLcbUZ+EgLUmTbzMtGRq3haOU=",
"path": "github.com/gophercloud/gophercloud/pagination",
"revision": "ed2f96ce05eb76a9fe89e671467ebf1818f49234",
"revisionTime": "2017-01-20T19:02:54Z"
"revision": "b06120d13e262ceaf890ef38ee30898813696af0",
"revisionTime": "2017-02-14T04:36:15Z"
},
{
"checksumSHA1": "6tvhO5ieOvX9R6o0vtl19s0lr8E=",