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
6cf3a4b5
Commit
6cf3a4b5
authored
Jan 21, 2016
by
k8s-merge-robot
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #18957 from jsafrane/devel/pv-name-tag
Auto commit by PR queue bot
parents
36b6d809
8c48250a
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
43 additions
and
18 deletions
+43
-18
persistentvolume_provisioner_controller.go
...rsistentvolume/persistentvolume_provisioner_controller.go
+13
-7
persistentvolume_provisioner_controller_test.go
...entvolume/persistentvolume_provisioner_controller_test.go
+19
-5
types.go
pkg/controller/persistentvolume/types.go
+5
-2
testing.go
pkg/volume/testing.go
+5
-3
persistent_volumes_test.go
test/integration/persistent_volumes_test.go
+1
-1
No files found.
pkg/controller/persistentvolume/persistentvolume_provisioner_controller.go
View file @
6cf3a4b5
...
...
@@ -172,7 +172,7 @@ func (controller *PersistentVolumeProvisionerController) reconcileClaim(claim *a
}
glog
.
V
(
5
)
.
Infof
(
"PersistentVolumeClaim[%s] provisioning"
,
claim
.
Name
)
provisioner
,
err
:=
newProvisioner
(
controller
.
provisioner
,
claim
)
provisioner
,
err
:=
newProvisioner
(
controller
.
provisioner
,
claim
,
nil
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"Unexpected error getting new provisioner for claim %s: %v
\n
"
,
claim
.
Name
,
err
)
}
...
...
@@ -274,7 +274,7 @@ func provisionVolume(pv *api.PersistentVolume, controller *PersistentVolumeProvi
}
claim
:=
obj
.
(
*
api
.
PersistentVolumeClaim
)
provisioner
,
_
:=
newProvisioner
(
controller
.
provisioner
,
claim
)
provisioner
,
_
:=
newProvisioner
(
controller
.
provisioner
,
claim
,
pv
)
err
:=
provisioner
.
Provision
(
pv
)
if
err
!=
nil
{
glog
.
Errorf
(
"Could not provision %s"
,
pv
.
Name
)
...
...
@@ -330,15 +330,21 @@ func (controller *PersistentVolumeProvisionerController) Stop() {
}
}
func
newProvisioner
(
plugin
volume
.
ProvisionableVolumePlugin
,
claim
*
api
.
PersistentVolumeClaim
)
(
volume
.
Provisioner
,
error
)
{
func
newProvisioner
(
plugin
volume
.
ProvisionableVolumePlugin
,
claim
*
api
.
PersistentVolumeClaim
,
pv
*
api
.
PersistentVolume
)
(
volume
.
Provisioner
,
error
)
{
tags
:=
make
(
map
[
string
]
string
)
tags
[
cloudVolumeCreatedForClaimNamespaceTag
]
=
claim
.
Namespace
tags
[
cloudVolumeCreatedForClaimNameTag
]
=
claim
.
Name
// pv can be nil when the provisioner has not created the PV yet
if
pv
!=
nil
{
tags
[
cloudVolumeCreatedForVolumeNameTag
]
=
pv
.
Name
}
volumeOptions
:=
volume
.
VolumeOptions
{
Capacity
:
claim
.
Spec
.
Resources
.
Requests
[
api
.
ResourceName
(
api
.
ResourceStorage
)],
AccessModes
:
claim
.
Spec
.
AccessModes
,
PersistentVolumeReclaimPolicy
:
api
.
PersistentVolumeReclaimDelete
,
CloudTags
:
&
map
[
string
]
string
{
cloudVolumeCreatedForNamespaceTag
:
claim
.
Namespace
,
cloudVolumeCreatedForNameTag
:
claim
.
Name
,
},
CloudTags
:
&
tags
,
}
provisioner
,
err
:=
plugin
.
NewProvisioner
(
volumeOptions
)
...
...
pkg/controller/persistentvolume/persistentvolume_provisioner_controller_test.go
View file @
6cf3a4b5
...
...
@@ -33,7 +33,7 @@ import (
)
func
TestProvisionerRunStop
(
t
*
testing
.
T
)
{
controller
,
_
:=
makeTestController
()
controller
,
_
,
_
:=
makeTestController
()
if
len
(
controller
.
stopChannels
)
!=
0
{
t
.
Errorf
(
"Non-running provisioner should not have any stopChannels. Got %v"
,
len
(
controller
.
stopChannels
))
...
...
@@ -92,15 +92,15 @@ func makeTestClaim() *api.PersistentVolumeClaim {
}
}
func
makeTestController
()
(
*
PersistentVolumeProvisionerController
,
*
mockControllerClient
)
{
func
makeTestController
()
(
*
PersistentVolumeProvisionerController
,
*
mockControllerClient
,
*
volume
.
FakeVolumePlugin
)
{
mockClient
:=
&
mockControllerClient
{}
mockVolumePlugin
:=
&
volume
.
FakeVolumePlugin
{}
controller
,
_
:=
NewPersistentVolumeProvisionerController
(
mockClient
,
1
*
time
.
Second
,
nil
,
mockVolumePlugin
,
&
fake_cloud
.
FakeCloud
{})
return
controller
,
mockClient
return
controller
,
mockClient
,
mockVolumePlugin
}
func
TestReconcileClaim
(
t
*
testing
.
T
)
{
controller
,
mockClient
:=
makeTestController
()
controller
,
mockClient
,
_
:=
makeTestController
()
pvc
:=
makeTestClaim
()
// watch would have added the claim to the store
...
...
@@ -132,9 +132,16 @@ func TestReconcileClaim(t *testing.T) {
}
}
func
checkTagValue
(
t
*
testing
.
T
,
tags
map
[
string
]
string
,
tag
string
,
expectedValue
string
)
{
value
,
found
:=
tags
[
tag
]
if
!
found
||
value
!=
expectedValue
{
t
.
Errorf
(
"Expected tag value %s = %s but value %s found"
,
tag
,
expectedValue
,
value
)
}
}
func
TestReconcileVolume
(
t
*
testing
.
T
)
{
controller
,
mockClient
:=
makeTestController
()
controller
,
mockClient
,
mockVolumePlugin
:=
makeTestController
()
pv
:=
makeTestVolume
()
pvc
:=
makeTestClaim
()
...
...
@@ -163,6 +170,13 @@ func TestReconcileVolume(t *testing.T) {
if
!
isAnnotationMatch
(
pvProvisioningRequiredAnnotationKey
,
pvProvisioningCompletedAnnotationValue
,
mockClient
.
volume
.
Annotations
)
{
t
.
Errorf
(
"Expected %s but got %s"
,
pvProvisioningRequiredAnnotationKey
,
mockClient
.
volume
.
Annotations
[
pvProvisioningRequiredAnnotationKey
])
}
// Check that the volume plugin was called with correct tags
tags
:=
*
mockVolumePlugin
.
LastProvisionerOptions
.
CloudTags
checkTagValue
(
t
,
tags
,
cloudVolumeCreatedForClaimNamespaceTag
,
pvc
.
Namespace
)
checkTagValue
(
t
,
tags
,
cloudVolumeCreatedForClaimNameTag
,
pvc
.
Name
)
checkTagValue
(
t
,
tags
,
cloudVolumeCreatedForVolumeNameTag
,
pv
.
Name
)
}
var
_
controllerClient
=
&
mockControllerClient
{}
...
...
pkg/controller/persistentvolume/types.go
View file @
6cf3a4b5
...
...
@@ -32,10 +32,13 @@ const (
qosProvisioningKey
=
"volume.alpha.kubernetes.io/storage-class"
// Name of a tag attached to a real volume in cloud (e.g. AWS EBS or GCE PD)
// with namespace of a persistent volume claim used to create this volume.
cloudVolumeCreatedForNamespaceTag
=
"kubernetes.io/created-for/pvc/namespace"
cloudVolumeCreatedFor
Claim
NamespaceTag
=
"kubernetes.io/created-for/pvc/namespace"
// Name of a tag attached to a real volume in cloud (e.g. AWS EBS or GCE PD)
// with name of a persistent volume claim used to create this volume.
cloudVolumeCreatedForNameTag
=
"kubernetes.io/created-for/pvc/name"
cloudVolumeCreatedForClaimNameTag
=
"kubernetes.io/created-for/pvc/name"
// Name of a tag attached to a real volume in cloud (e.g. AWS EBS or GCE PD)
// with name of appropriate Kubernetes persistent volume .
cloudVolumeCreatedForVolumeNameTag
=
"kubernetes.io/created-for/pv/name"
)
// persistentVolumeOrderedIndex is a cache.Store that keeps persistent volumes indexed by AccessModes and ordered by storage capacity.
...
...
pkg/volume/testing.go
View file @
6cf3a4b5
...
...
@@ -120,9 +120,10 @@ func ProbeVolumePlugins(config VolumeConfig) []VolumePlugin {
// Use as:
// volume.RegisterPlugin(&FakePlugin{"fake-name"})
type
FakeVolumePlugin
struct
{
PluginName
string
Host
VolumeHost
Config
VolumeConfig
PluginName
string
Host
VolumeHost
Config
VolumeConfig
LastProvisionerOptions
VolumeOptions
}
var
_
VolumePlugin
=
&
FakeVolumePlugin
{}
...
...
@@ -161,6 +162,7 @@ func (plugin *FakeVolumePlugin) NewDeleter(spec *Spec) (Deleter, error) {
}
func
(
plugin
*
FakeVolumePlugin
)
NewProvisioner
(
options
VolumeOptions
)
(
Provisioner
,
error
)
{
plugin
.
LastProvisionerOptions
=
options
return
&
FakeProvisioner
{
options
,
plugin
.
Host
},
nil
}
...
...
test/integration/persistent_volumes_test.go
View file @
6cf3a4b5
...
...
@@ -50,7 +50,7 @@ func TestPersistentVolumeRecycler(t *testing.T) {
testClient
:=
client
.
NewOrDie
(
&
client
.
Config
{
Host
:
s
.
URL
,
GroupVersion
:
testapi
.
Default
.
GroupVersion
()})
host
:=
volume
.
NewFakeVolumeHost
(
"/tmp/fake"
,
nil
,
nil
)
plugins
:=
[]
volume
.
VolumePlugin
{
&
volume
.
FakeVolumePlugin
{
"plugin-name"
,
host
,
volume
.
VolumeConfig
{}}}
plugins
:=
[]
volume
.
VolumePlugin
{
&
volume
.
FakeVolumePlugin
{
"plugin-name"
,
host
,
volume
.
VolumeConfig
{}
,
volume
.
VolumeOptions
{}
}}
cloud
:=
&
fake_cloud
.
FakeCloud
{}
binder
:=
persistentvolumecontroller
.
NewPersistentVolumeClaimBinder
(
binderClient
,
10
*
time
.
Second
)
...
...
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