Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
89f596f4
Commit
89f596f4
authored
Mar 11, 2017
by
Maxym Kutsevol
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update deps
parent
2c05bb53
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
485 additions
and
1 deletion
+485
-1
Godeps.json
Godeps/Godeps.json
+9
-1
LICENSES
Godeps/LICENSES
+0
-0
BUILD
pkg/cloudprovider/providers/openstack/BUILD
+2
-0
BUILD
vendor/BUILD
+31
-0
doc.go
.../gophercloud/openstack/blockstorage/v1/apiversions/doc.go
+3
-0
requests.go
...ercloud/openstack/blockstorage/v1/apiversions/requests.go
+20
-0
results.go
...hercloud/openstack/blockstorage/v1/apiversions/results.go
+49
-0
urls.go
...gophercloud/openstack/blockstorage/v1/apiversions/urls.go
+18
-0
doc.go
...loud/gophercloud/openstack/blockstorage/v2/volumes/doc.go
+5
-0
requests.go
...gophercloud/openstack/blockstorage/v2/volumes/requests.go
+182
-0
results.go
.../gophercloud/openstack/blockstorage/v2/volumes/results.go
+121
-0
urls.go
...oud/gophercloud/openstack/blockstorage/v2/volumes/urls.go
+23
-0
util.go
...oud/gophercloud/openstack/blockstorage/v2/volumes/util.go
+22
-0
No files found.
Godeps/Godeps.json
View file @
89f596f4
{
"ImportPath"
:
"k8s.io/kubernetes"
,
"GoVersion"
:
"go1.7"
,
"GodepVersion"
:
"v7
9
"
,
"GodepVersion"
:
"v7
4
"
,
"Packages"
:
[
"github.com/ugorji/go/codec/codecgen"
,
"github.com/onsi/ginkgo/ginkgo"
,
...
...
@@ -1417,10 +1417,18 @@
"Rev"
:
"12f19e5e04d617182cffa5c11f189ef0013b9791"
},
{
"ImportPath"
:
"github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions"
,
"Rev"
:
"12f19e5e04d617182cffa5c11f189ef0013b9791"
},
{
"ImportPath"
:
"github.com/gophercloud/gophercloud/openstack/blockstorage/v1/volumes"
,
"Rev"
:
"12f19e5e04d617182cffa5c11f189ef0013b9791"
},
{
"ImportPath"
:
"github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes"
,
"Rev"
:
"12f19e5e04d617182cffa5c11f189ef0013b9791"
},
{
"ImportPath"
:
"github.com/gophercloud/gophercloud/openstack/common/extensions"
,
"Rev"
:
"12f19e5e04d617182cffa5c11f189ef0013b9791"
},
...
...
Godeps/LICENSES
View file @
89f596f4
This diff is collapsed.
Click to expand it.
pkg/cloudprovider/providers/openstack/BUILD
View file @
89f596f4
...
...
@@ -29,7 +29,9 @@ go_library(
"//vendor:github.com/golang/glog",
"//vendor:github.com/gophercloud/gophercloud",
"//vendor:github.com/gophercloud/gophercloud/openstack",
"//vendor:github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions",
"//vendor:github.com/gophercloud/gophercloud/openstack/blockstorage/v1/volumes",
"//vendor:github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes",
"//vendor:github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/volumeattach",
"//vendor:github.com/gophercloud/gophercloud/openstack/compute/v2/flavors",
"//vendor:github.com/gophercloud/gophercloud/openstack/compute/v2/servers",
...
...
vendor/BUILD
View file @
89f596f4
...
...
@@ -4158,6 +4158,21 @@ go_library(
)
go_library(
name = "github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions",
srcs = [
"github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions/doc.go",
"github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions/requests.go",
"github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions/results.go",
"github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions/urls.go",
],
tags = ["automanaged"],
deps = [
"//vendor:github.com/gophercloud/gophercloud",
"//vendor:github.com/gophercloud/gophercloud/pagination",
],
)
go_library(
name = "github.com/gophercloud/gophercloud/openstack/blockstorage/v1/volumes",
srcs = [
"github.com/gophercloud/gophercloud/openstack/blockstorage/v1/volumes/doc.go",
...
...
@@ -4174,6 +4189,22 @@ go_library(
)
go_library(
name = "github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes",
srcs = [
"github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/doc.go",
"github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/requests.go",
"github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/results.go",
"github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/urls.go",
"github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/util.go",
],
tags = ["automanaged"],
deps = [
"//vendor:github.com/gophercloud/gophercloud",
"//vendor:github.com/gophercloud/gophercloud/pagination",
],
)
go_library(
name = "github.com/gophercloud/gophercloud/openstack/common/extensions",
srcs = [
"github.com/gophercloud/gophercloud/openstack/common/extensions/doc.go",
...
...
vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions/doc.go
0 → 100644
View file @
89f596f4
// Package apiversions provides information and interaction with the different
// API versions for the OpenStack Block Storage service, code-named Cinder.
package
apiversions
vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions/requests.go
0 → 100644
View file @
89f596f4
package
apiversions
import
(
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/pagination"
)
// List lists all the Cinder API versions available to end-users.
func
List
(
c
*
gophercloud
.
ServiceClient
)
pagination
.
Pager
{
return
pagination
.
NewPager
(
c
,
listURL
(
c
),
func
(
r
pagination
.
PageResult
)
pagination
.
Page
{
return
APIVersionPage
{
pagination
.
SinglePageBase
(
r
)}
})
}
// Get will retrieve the volume type with the provided ID. To extract the volume
// type from the result, call the Extract method on the GetResult.
func
Get
(
client
*
gophercloud
.
ServiceClient
,
v
string
)
(
r
GetResult
)
{
_
,
r
.
Err
=
client
.
Get
(
getURL
(
client
,
v
),
&
r
.
Body
,
nil
)
return
}
vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions/results.go
0 → 100644
View file @
89f596f4
package
apiversions
import
(
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/pagination"
)
// APIVersion represents an API version for Cinder.
type
APIVersion
struct
{
ID
string
`json:"id"`
// unique identifier
Status
string
`json:"status"`
// current status
Updated
string
`json:"updated"`
// date last updated
}
// APIVersionPage is the page returned by a pager when traversing over a
// collection of API versions.
type
APIVersionPage
struct
{
pagination
.
SinglePageBase
}
// IsEmpty checks whether an APIVersionPage struct is empty.
func
(
r
APIVersionPage
)
IsEmpty
()
(
bool
,
error
)
{
is
,
err
:=
ExtractAPIVersions
(
r
)
return
len
(
is
)
==
0
,
err
}
// ExtractAPIVersions takes a collection page, extracts all of the elements,
// and returns them a slice of APIVersion structs. It is effectively a cast.
func
ExtractAPIVersions
(
r
pagination
.
Page
)
([]
APIVersion
,
error
)
{
var
s
struct
{
Versions
[]
APIVersion
`json:"versions"`
}
err
:=
(
r
.
(
APIVersionPage
))
.
ExtractInto
(
&
s
)
return
s
.
Versions
,
err
}
// GetResult represents the result of a get operation.
type
GetResult
struct
{
gophercloud
.
Result
}
// Extract is a function that accepts a result and extracts an API version resource.
func
(
r
GetResult
)
Extract
()
(
*
APIVersion
,
error
)
{
var
s
struct
{
Version
*
APIVersion
`json:"version"`
}
err
:=
r
.
ExtractInto
(
&
s
)
return
s
.
Version
,
err
}
vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions/urls.go
0 → 100644
View file @
89f596f4
package
apiversions
import
(
"strings"
"net/url"
"github.com/gophercloud/gophercloud"
)
func
getURL
(
c
*
gophercloud
.
ServiceClient
,
version
string
)
string
{
return
c
.
ServiceURL
(
strings
.
TrimRight
(
version
,
"/"
)
+
"/"
)
}
func
listURL
(
c
*
gophercloud
.
ServiceClient
)
string
{
u
,
_
:=
url
.
Parse
(
c
.
ServiceURL
(
""
))
u
.
Path
=
"/"
return
u
.
String
()
}
vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/doc.go
0 → 100644
View file @
89f596f4
// Package volumes provides information and interaction with volumes in the
// OpenStack Block Storage service. A volume is a detachable block storage
// device, akin to a USB hard drive. It can only be attached to one instance at
// a time.
package
volumes
vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/requests.go
0 → 100644
View file @
89f596f4
package
volumes
import
(
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/pagination"
)
// CreateOptsBuilder allows extensions to add additional parameters to the
// Create request.
type
CreateOptsBuilder
interface
{
ToVolumeCreateMap
()
(
map
[
string
]
interface
{},
error
)
}
// CreateOpts contains options for creating a Volume. This object is passed to
// the volumes.Create function. For more information about these parameters,
// see the Volume object.
type
CreateOpts
struct
{
// The size of the volume, in GB
Size
int
`json:"size" required:"true"`
// The availability zone
AvailabilityZone
string
`json:"availability_zone,omitempty"`
// ConsistencyGroupID is the ID of a consistency group
ConsistencyGroupID
string
`json:"consistencygroup_id,omitempty"`
// The volume description
Description
string
`json:"description,omitempty"`
// One or more metadata key and value pairs to associate with the volume
Metadata
map
[
string
]
string
`json:"metadata,omitempty"`
// The volume name
Name
string
`json:"name,omitempty"`
// the ID of the existing volume snapshot
SnapshotID
string
`json:"snapshot_id,omitempty"`
// SourceReplica is a UUID of an existing volume to replicate with
SourceReplica
string
`json:"source_replica,omitempty"`
// the ID of the existing volume
SourceVolID
string
`json:"source_volid,omitempty"`
// The ID of the image from which you want to create the volume.
// Required to create a bootable volume.
ImageID
string
`json:"imageRef,omitempty"`
// The associated volume type
VolumeType
string
`json:"volume_type,omitempty"`
}
// ToVolumeCreateMap assembles a request body based on the contents of a
// CreateOpts.
func
(
opts
CreateOpts
)
ToVolumeCreateMap
()
(
map
[
string
]
interface
{},
error
)
{
return
gophercloud
.
BuildRequestBody
(
opts
,
"volume"
)
}
// Create will create a new Volume based on the values in CreateOpts. To extract
// the Volume object from the response, call the Extract method on the
// CreateResult.
func
Create
(
client
*
gophercloud
.
ServiceClient
,
opts
CreateOptsBuilder
)
(
r
CreateResult
)
{
b
,
err
:=
opts
.
ToVolumeCreateMap
()
if
err
!=
nil
{
r
.
Err
=
err
return
}
_
,
r
.
Err
=
client
.
Post
(
createURL
(
client
),
b
,
&
r
.
Body
,
&
gophercloud
.
RequestOpts
{
OkCodes
:
[]
int
{
202
},
})
return
}
// Delete will delete the existing Volume with the provided ID.
func
Delete
(
client
*
gophercloud
.
ServiceClient
,
id
string
)
(
r
DeleteResult
)
{
_
,
r
.
Err
=
client
.
Delete
(
deleteURL
(
client
,
id
),
nil
)
return
}
// Get retrieves the Volume with the provided ID. To extract the Volume object
// from the response, call the Extract method on the GetResult.
func
Get
(
client
*
gophercloud
.
ServiceClient
,
id
string
)
(
r
GetResult
)
{
_
,
r
.
Err
=
client
.
Get
(
getURL
(
client
,
id
),
&
r
.
Body
,
nil
)
return
}
// ListOptsBuilder allows extensions to add additional parameters to the List
// request.
type
ListOptsBuilder
interface
{
ToVolumeListQuery
()
(
string
,
error
)
}
// ListOpts holds options for listing Volumes. It is passed to the volumes.List
// function.
type
ListOpts
struct
{
// admin-only option. Set it to true to see all tenant volumes.
AllTenants
bool
`q:"all_tenants"`
// List only volumes that contain Metadata.
Metadata
map
[
string
]
string
`q:"metadata"`
// List only volumes that have Name as the display name.
Name
string
`q:"name"`
// List only volumes that have a status of Status.
Status
string
`q:"status"`
}
// ToVolumeListQuery formats a ListOpts into a query string.
func
(
opts
ListOpts
)
ToVolumeListQuery
()
(
string
,
error
)
{
q
,
err
:=
gophercloud
.
BuildQueryString
(
opts
)
return
q
.
String
(),
err
}
// List returns Volumes optionally limited by the conditions provided in ListOpts.
func
List
(
client
*
gophercloud
.
ServiceClient
,
opts
ListOptsBuilder
)
pagination
.
Pager
{
url
:=
listURL
(
client
)
if
opts
!=
nil
{
query
,
err
:=
opts
.
ToVolumeListQuery
()
if
err
!=
nil
{
return
pagination
.
Pager
{
Err
:
err
}
}
url
+=
query
}
return
pagination
.
NewPager
(
client
,
url
,
func
(
r
pagination
.
PageResult
)
pagination
.
Page
{
return
VolumePage
{
pagination
.
SinglePageBase
(
r
)}
})
}
// UpdateOptsBuilder allows extensions to add additional parameters to the
// Update request.
type
UpdateOptsBuilder
interface
{
ToVolumeUpdateMap
()
(
map
[
string
]
interface
{},
error
)
}
// UpdateOpts contain options for updating an existing Volume. This object is passed
// to the volumes.Update function. For more information about the parameters, see
// the Volume object.
type
UpdateOpts
struct
{
Name
string
`json:"name,omitempty"`
Description
string
`json:"description,omitempty"`
Metadata
map
[
string
]
string
`json:"metadata,omitempty"`
}
// ToVolumeUpdateMap assembles a request body based on the contents of an
// UpdateOpts.
func
(
opts
UpdateOpts
)
ToVolumeUpdateMap
()
(
map
[
string
]
interface
{},
error
)
{
return
gophercloud
.
BuildRequestBody
(
opts
,
"volume"
)
}
// Update will update the Volume with provided information. To extract the updated
// Volume from the response, call the Extract method on the UpdateResult.
func
Update
(
client
*
gophercloud
.
ServiceClient
,
id
string
,
opts
UpdateOptsBuilder
)
(
r
UpdateResult
)
{
b
,
err
:=
opts
.
ToVolumeUpdateMap
()
if
err
!=
nil
{
r
.
Err
=
err
return
}
_
,
r
.
Err
=
client
.
Put
(
updateURL
(
client
,
id
),
b
,
&
r
.
Body
,
&
gophercloud
.
RequestOpts
{
OkCodes
:
[]
int
{
200
},
})
return
}
// IDFromName is a convienience function that returns a server's ID given its name.
func
IDFromName
(
client
*
gophercloud
.
ServiceClient
,
name
string
)
(
string
,
error
)
{
count
:=
0
id
:=
""
pages
,
err
:=
List
(
client
,
nil
)
.
AllPages
()
if
err
!=
nil
{
return
""
,
err
}
all
,
err
:=
ExtractVolumes
(
pages
)
if
err
!=
nil
{
return
""
,
err
}
for
_
,
s
:=
range
all
{
if
s
.
Name
==
name
{
count
++
id
=
s
.
ID
}
}
switch
count
{
case
0
:
return
""
,
gophercloud
.
ErrResourceNotFound
{
Name
:
name
,
ResourceType
:
"volume"
}
case
1
:
return
id
,
nil
default
:
return
""
,
gophercloud
.
ErrMultipleResourcesFound
{
Name
:
name
,
Count
:
count
,
ResourceType
:
"volume"
}
}
}
vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/results.go
0 → 100644
View file @
89f596f4
package
volumes
import
(
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/pagination"
)
type
Attachment
struct
{
AttachedAt
gophercloud
.
JSONRFC3339MilliNoZ
`json:"attached_at"`
AttachmentID
string
`json:"attachment_id"`
Device
string
`json:"device"`
HostName
string
`json:"host_name"`
ID
string
`json:"id"`
ServerID
string
`json:"server_id"`
VolumeID
string
`json:"volume_id"`
}
// Volume contains all the information associated with an OpenStack Volume.
type
Volume
struct
{
// Unique identifier for the volume.
ID
string
`json:"id"`
// Current status of the volume.
Status
string
`json:"status"`
// Size of the volume in GB.
Size
int
`json:"size"`
// AvailabilityZone is which availability zone the volume is in.
AvailabilityZone
string
`json:"availability_zone"`
// The date when this volume was created.
CreatedAt
gophercloud
.
JSONRFC3339MilliNoZ
`json:"created_at"`
// The date when this volume was last updated
UpdatedAt
gophercloud
.
JSONRFC3339MilliNoZ
`json:"updated_at"`
// Instances onto which the volume is attached.
Attachments
[]
Attachment
`json:"attachments"`
// Human-readable display name for the volume.
Name
string
`json:"name"`
// Human-readable description for the volume.
Description
string
`json:"description"`
// The type of volume to create, either SATA or SSD.
VolumeType
string
`json:"volume_type"`
// The ID of the snapshot from which the volume was created
SnapshotID
string
`json:"snapshot_id"`
// The ID of another block storage volume from which the current volume was created
SourceVolID
string
`json:"source_volid"`
// Arbitrary key-value pairs defined by the user.
Metadata
map
[
string
]
string
`json:"metadata"`
// UserID is the id of the user who created the volume.
UserID
string
`json:"user_id"`
// Indicates whether this is a bootable volume.
Bootable
string
`json:"bootable"`
// Encrypted denotes if the volume is encrypted.
Encrypted
bool
`json:"encrypted"`
// ReplicationStatus is the status of replication.
ReplicationStatus
string
`json:"replication_status"`
// ConsistencyGroupID is the consistency group ID.
ConsistencyGroupID
string
`json:"consistencygroup_id"`
// Multiattach denotes if the volume is multi-attach capable.
Multiattach
bool
`json:"multiattach"`
}
/*
THESE BELONG IN EXTENSIONS:
// ReplicationDriverData contains data about the replication driver.
ReplicationDriverData string `json:"os-volume-replication:driver_data"`
// ReplicationExtendedStatus contains extended status about replication.
ReplicationExtendedStatus string `json:"os-volume-replication:extended_status"`
// TenantID is the id of the project that owns the volume.
TenantID string `json:"os-vol-tenant-attr:tenant_id"`
*/
// VolumePage is a pagination.pager that is returned from a call to the List function.
type
VolumePage
struct
{
pagination
.
SinglePageBase
}
// IsEmpty returns true if a ListResult contains no Volumes.
func
(
r
VolumePage
)
IsEmpty
()
(
bool
,
error
)
{
volumes
,
err
:=
ExtractVolumes
(
r
)
return
len
(
volumes
)
==
0
,
err
}
// ExtractVolumes extracts and returns Volumes. It is used while iterating over a volumes.List call.
func
ExtractVolumes
(
r
pagination
.
Page
)
([]
Volume
,
error
)
{
var
s
struct
{
Volumes
[]
Volume
`json:"volumes"`
}
err
:=
(
r
.
(
VolumePage
))
.
ExtractInto
(
&
s
)
return
s
.
Volumes
,
err
}
type
commonResult
struct
{
gophercloud
.
Result
}
// Extract will get the Volume object out of the commonResult object.
func
(
r
commonResult
)
Extract
()
(
*
Volume
,
error
)
{
var
s
struct
{
Volume
*
Volume
`json:"volume"`
}
err
:=
r
.
ExtractInto
(
&
s
)
return
s
.
Volume
,
err
}
// CreateResult contains the response body and error from a Create request.
type
CreateResult
struct
{
commonResult
}
// GetResult contains the response body and error from a Get request.
type
GetResult
struct
{
commonResult
}
// UpdateResult contains the response body and error from an Update request.
type
UpdateResult
struct
{
commonResult
}
// DeleteResult contains the response body and error from a Delete request.
type
DeleteResult
struct
{
gophercloud
.
ErrResult
}
vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/urls.go
0 → 100644
View file @
89f596f4
package
volumes
import
"github.com/gophercloud/gophercloud"
func
createURL
(
c
*
gophercloud
.
ServiceClient
)
string
{
return
c
.
ServiceURL
(
"volumes"
)
}
func
listURL
(
c
*
gophercloud
.
ServiceClient
)
string
{
return
c
.
ServiceURL
(
"volumes"
,
"detail"
)
}
func
deleteURL
(
c
*
gophercloud
.
ServiceClient
,
id
string
)
string
{
return
c
.
ServiceURL
(
"volumes"
,
id
)
}
func
getURL
(
c
*
gophercloud
.
ServiceClient
,
id
string
)
string
{
return
deleteURL
(
c
,
id
)
}
func
updateURL
(
c
*
gophercloud
.
ServiceClient
,
id
string
)
string
{
return
deleteURL
(
c
,
id
)
}
vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/util.go
0 → 100644
View file @
89f596f4
package
volumes
import
(
"github.com/gophercloud/gophercloud"
)
// WaitForStatus will continually poll the resource, checking for a particular
// status. It will do this for the amount of seconds defined.
func
WaitForStatus
(
c
*
gophercloud
.
ServiceClient
,
id
,
status
string
,
secs
int
)
error
{
return
gophercloud
.
WaitFor
(
secs
,
func
()
(
bool
,
error
)
{
current
,
err
:=
Get
(
c
,
id
)
.
Extract
()
if
err
!=
nil
{
return
false
,
err
}
if
current
.
Status
==
status
{
return
true
,
nil
}
return
false
,
nil
})
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment