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
65605023
Commit
65605023
authored
Mar 10, 2016
by
k8s-merge-robot
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #22602 from justinsb/multizone_label_dynamic_pvs
Auto commit by PR queue bot
parents
a5369a2c
c771bf43
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
67 additions
and
17 deletions
+67
-17
aws_ebs.go
pkg/volume/aws_ebs/aws_ebs.go
+12
-2
aws_ebs_test.go
pkg/volume/aws_ebs/aws_ebs_test.go
+8
-2
aws_util.go
pkg/volume/aws_ebs/aws_util.go
+13
-4
gce_pd.go
pkg/volume/gce_pd/gce_pd.go
+12
-2
gce_pd_test.go
pkg/volume/gce_pd/gce_pd_test.go
+8
-2
gce_util.go
pkg/volume/gce_pd/gce_util.go
+14
-5
No files found.
pkg/volume/aws_ebs/aws_ebs.go
View file @
65605023
...
...
@@ -168,7 +168,7 @@ type ebsManager interface {
// Detaches the disk from the kubelet's host machine.
DetachDisk
(
c
*
awsElasticBlockStoreCleaner
)
error
// Creates a volume
CreateVolume
(
provisioner
*
awsElasticBlockStoreProvisioner
)
(
volumeID
string
,
volumeSizeGB
int
,
err
error
)
CreateVolume
(
provisioner
*
awsElasticBlockStoreProvisioner
)
(
volumeID
string
,
volumeSizeGB
int
,
labels
map
[
string
]
string
,
err
error
)
// Deletes a volume
DeleteVolume
(
deleter
*
awsElasticBlockStoreDeleter
)
error
}
...
...
@@ -409,7 +409,7 @@ type awsElasticBlockStoreProvisioner struct {
var
_
volume
.
Provisioner
=
&
awsElasticBlockStoreProvisioner
{}
func
(
c
*
awsElasticBlockStoreProvisioner
)
Provision
(
pv
*
api
.
PersistentVolume
)
error
{
volumeID
,
sizeGB
,
err
:=
c
.
manager
.
CreateVolume
(
c
)
volumeID
,
sizeGB
,
labels
,
err
:=
c
.
manager
.
CreateVolume
(
c
)
if
err
!=
nil
{
return
err
}
...
...
@@ -417,6 +417,16 @@ func (c *awsElasticBlockStoreProvisioner) Provision(pv *api.PersistentVolume) er
pv
.
Spec
.
Capacity
=
api
.
ResourceList
{
api
.
ResourceName
(
api
.
ResourceStorage
)
:
resource
.
MustParse
(
fmt
.
Sprintf
(
"%dGi"
,
sizeGB
)),
}
if
len
(
labels
)
!=
0
{
if
pv
.
Labels
==
nil
{
pv
.
Labels
=
make
(
map
[
string
]
string
)
}
for
k
,
v
:=
range
labels
{
pv
.
Labels
[
k
]
=
v
}
}
return
nil
}
...
...
pkg/volume/aws_ebs/aws_ebs_test.go
View file @
65605023
...
...
@@ -117,8 +117,10 @@ func (fake *fakePDManager) DetachDisk(c *awsElasticBlockStoreCleaner) error {
return
nil
}
func
(
fake
*
fakePDManager
)
CreateVolume
(
c
*
awsElasticBlockStoreProvisioner
)
(
volumeID
string
,
volumeSizeGB
int
,
err
error
)
{
return
"test-aws-volume-name"
,
100
,
nil
func
(
fake
*
fakePDManager
)
CreateVolume
(
c
*
awsElasticBlockStoreProvisioner
)
(
volumeID
string
,
volumeSizeGB
int
,
labels
map
[
string
]
string
,
err
error
)
{
labels
=
make
(
map
[
string
]
string
)
labels
[
"fakepdmanager"
]
=
"yes"
return
"test-aws-volume-name"
,
100
,
labels
,
nil
}
func
(
fake
*
fakePDManager
)
DeleteVolume
(
cd
*
awsElasticBlockStoreDeleter
)
error
{
...
...
@@ -239,6 +241,10 @@ func TestPlugin(t *testing.T) {
t
.
Errorf
(
"Provision() returned unexpected volume size: %v"
,
size
)
}
if
persistentSpec
.
Labels
[
"fakepdmanager"
]
!=
"yes"
{
t
.
Errorf
(
"Provision() returned unexpected labels: %v"
,
persistentSpec
.
Labels
)
}
// Test Deleter
volSpec
:=
&
volume
.
Spec
{
PersistentVolume
:
persistentSpec
,
...
...
pkg/volume/aws_ebs/aws_util.go
View file @
65605023
...
...
@@ -126,10 +126,12 @@ func (util *AWSDiskUtil) DeleteVolume(d *awsElasticBlockStoreDeleter) error {
return
nil
}
func
(
util
*
AWSDiskUtil
)
CreateVolume
(
c
*
awsElasticBlockStoreProvisioner
)
(
volumeID
string
,
volumeSizeGB
int
,
err
error
)
{
// CreateVolume creates an AWS EBS volume.
// Returns: volumeID, volumeSizeGB, labels, error
func
(
util
*
AWSDiskUtil
)
CreateVolume
(
c
*
awsElasticBlockStoreProvisioner
)
(
string
,
int
,
map
[
string
]
string
,
error
)
{
cloud
,
err
:=
getCloudProvider
()
if
err
!=
nil
{
return
""
,
0
,
err
return
""
,
0
,
nil
,
err
}
// AWS volumes don't have Name field, store the name in Name tag
...
...
@@ -152,10 +154,17 @@ func (util *AWSDiskUtil) CreateVolume(c *awsElasticBlockStoreProvisioner) (volum
name
,
err
:=
cloud
.
CreateDisk
(
volumeOptions
)
if
err
!=
nil
{
glog
.
V
(
2
)
.
Infof
(
"Error creating EBS Disk volume: %v"
,
err
)
return
""
,
0
,
err
return
""
,
0
,
nil
,
err
}
glog
.
V
(
2
)
.
Infof
(
"Successfully created EBS Disk volume %s"
,
name
)
return
name
,
int
(
requestGB
),
nil
labels
,
err
:=
cloud
.
GetVolumeLabels
(
name
)
if
err
!=
nil
{
// We don't really want to leak the volume here...
glog
.
Errorf
(
"error building labels for new EBS volume %q: %v"
,
name
,
err
)
}
return
name
,
int
(
requestGB
),
labels
,
nil
}
// Attaches the specified persistent disk device to node, verifies that it is attached, and retries if it fails.
...
...
pkg/volume/gce_pd/gce_pd.go
View file @
65605023
...
...
@@ -168,7 +168,7 @@ type pdManager interface {
// Detaches the disk from the kubelet's host machine.
DetachDisk
(
c
*
gcePersistentDiskCleaner
)
error
// Creates a volume
CreateVolume
(
provisioner
*
gcePersistentDiskProvisioner
)
(
volumeID
string
,
volumeSizeGB
int
,
err
error
)
CreateVolume
(
provisioner
*
gcePersistentDiskProvisioner
)
(
volumeID
string
,
volumeSizeGB
int
,
labels
map
[
string
]
string
,
err
error
)
// Deletes a volume
DeleteVolume
(
deleter
*
gcePersistentDiskDeleter
)
error
}
...
...
@@ -371,7 +371,7 @@ type gcePersistentDiskProvisioner struct {
var
_
volume
.
Provisioner
=
&
gcePersistentDiskProvisioner
{}
func
(
c
*
gcePersistentDiskProvisioner
)
Provision
(
pv
*
api
.
PersistentVolume
)
error
{
volumeID
,
sizeGB
,
err
:=
c
.
manager
.
CreateVolume
(
c
)
volumeID
,
sizeGB
,
labels
,
err
:=
c
.
manager
.
CreateVolume
(
c
)
if
err
!=
nil
{
return
err
}
...
...
@@ -379,6 +379,16 @@ func (c *gcePersistentDiskProvisioner) Provision(pv *api.PersistentVolume) error
pv
.
Spec
.
Capacity
=
api
.
ResourceList
{
api
.
ResourceName
(
api
.
ResourceStorage
)
:
resource
.
MustParse
(
fmt
.
Sprintf
(
"%dGi"
,
sizeGB
)),
}
if
len
(
labels
)
!=
0
{
if
pv
.
Labels
==
nil
{
pv
.
Labels
=
make
(
map
[
string
]
string
)
}
for
k
,
v
:=
range
labels
{
pv
.
Labels
[
k
]
=
v
}
}
return
nil
}
...
...
pkg/volume/gce_pd/gce_pd_test.go
View file @
65605023
...
...
@@ -113,8 +113,10 @@ func (fake *fakePDManager) DetachDisk(c *gcePersistentDiskCleaner) error {
return
nil
}
func
(
fake
*
fakePDManager
)
CreateVolume
(
c
*
gcePersistentDiskProvisioner
)
(
volumeID
string
,
volumeSizeGB
int
,
err
error
)
{
return
"test-gce-volume-name"
,
100
,
nil
func
(
fake
*
fakePDManager
)
CreateVolume
(
c
*
gcePersistentDiskProvisioner
)
(
volumeID
string
,
volumeSizeGB
int
,
labels
map
[
string
]
string
,
err
error
)
{
labels
=
make
(
map
[
string
]
string
)
labels
[
"fakepdmanager"
]
=
"yes"
return
"test-gce-volume-name"
,
100
,
labels
,
nil
}
func
(
fake
*
fakePDManager
)
DeleteVolume
(
cd
*
gcePersistentDiskDeleter
)
error
{
...
...
@@ -235,6 +237,10 @@ func TestPlugin(t *testing.T) {
t
.
Errorf
(
"Provision() returned unexpected volume size: %v"
,
size
)
}
if
persistentSpec
.
Labels
[
"fakepdmanager"
]
!=
"yes"
{
t
.
Errorf
(
"Provision() returned unexpected labels: %v"
,
persistentSpec
.
Labels
)
}
// Test Deleter
volSpec
:=
&
volume
.
Spec
{
PersistentVolume
:
persistentSpec
,
...
...
pkg/volume/gce_pd/gce_util.go
View file @
65605023
...
...
@@ -127,10 +127,12 @@ func (util *GCEDiskUtil) DeleteVolume(d *gcePersistentDiskDeleter) error {
return
nil
}
func
(
gceutil
*
GCEDiskUtil
)
CreateVolume
(
c
*
gcePersistentDiskProvisioner
)
(
volumeID
string
,
volumeSizeGB
int
,
err
error
)
{
// CreateVolume creates a GCE PD.
// Returns: volumeID, volumeSizeGB, labels, error
func
(
gceutil
*
GCEDiskUtil
)
CreateVolume
(
c
*
gcePersistentDiskProvisioner
)
(
string
,
int
,
map
[
string
]
string
,
error
)
{
cloud
,
err
:=
getCloudProvider
()
if
err
!=
nil
{
return
""
,
0
,
err
return
""
,
0
,
nil
,
err
}
name
:=
volume
.
GenerateVolumeName
(
c
.
options
.
ClusterName
,
c
.
options
.
PVName
,
63
)
// GCE PD name can have up to 63 characters
...
...
@@ -143,16 +145,23 @@ func (gceutil *GCEDiskUtil) CreateVolume(c *gcePersistentDiskProvisioner) (volum
zone
,
err
:=
cloud
.
GetZone
()
if
err
!=
nil
{
glog
.
V
(
2
)
.
Infof
(
"error getting zone information from GCE: %v"
,
err
)
return
""
,
0
,
err
return
""
,
0
,
nil
,
err
}
err
=
cloud
.
CreateDisk
(
name
,
zone
.
FailureDomain
,
int64
(
requestGB
),
*
c
.
options
.
CloudTags
)
if
err
!=
nil
{
glog
.
V
(
2
)
.
Infof
(
"Error creating GCE PD volume: %v"
,
err
)
return
""
,
0
,
err
return
""
,
0
,
nil
,
err
}
glog
.
V
(
2
)
.
Infof
(
"Successfully created GCE PD volume %s"
,
name
)
return
name
,
int
(
requestGB
),
nil
labels
,
err
:=
cloud
.
GetAutoLabelsForPD
(
name
)
if
err
!=
nil
{
// We don't really want to leak the volume here...
glog
.
Errorf
(
"error getting labels for volume %q: %v"
,
name
,
err
)
}
return
name
,
int
(
requestGB
),
labels
,
nil
}
// Attaches the specified persistent disk device to node, verifies that it is attached, and retries if it fails.
...
...
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