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
d4afb781
Commit
d4afb781
authored
Aug 12, 2016
by
Hongchao Deng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
change all PredicateFunc to use SelectionPredicate
parent
e39d7f71
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
215 additions
and
230 deletions
+215
-230
reststorage.go
examples/apiserver/rest/reststorage.go
+13
-1
strategy_test.go
federation/registry/cluster/strategy_test.go
+1
-1
conversion.go
pkg/api/testing/conversion.go
+2
-2
strategy.go
pkg/registry/certificates/strategy.go
+16
-13
strategy.go
pkg/registry/clusterrole/strategy.go
+14
-11
strategy.go
pkg/registry/clusterrolebinding/strategy.go
+14
-11
strategy_test.go
pkg/registry/configmap/strategy_test.go
+1
-2
strategy_test.go
pkg/registry/controller/strategy_test.go
+1
-2
strategy_test.go
pkg/registry/daemonset/strategy_test.go
+1
-2
strategy_test.go
pkg/registry/deployment/strategy_test.go
+1
-2
strategy_test.go
pkg/registry/endpoint/strategy_test.go
+1
-2
strategy_test.go
pkg/registry/event/strategy_test.go
+1
-1
matcher.go
pkg/registry/generic/matcher.go
+0
-43
matcher_test.go
pkg/registry/generic/matcher_test.go
+0
-11
strategy_test.go
pkg/registry/horizontalpodautoscaler/strategy_test.go
+1
-2
strategy_test.go
pkg/registry/ingress/strategy_test.go
+1
-2
strategy_test.go
pkg/registry/job/strategy_test.go
+1
-2
strategy_test.go
pkg/registry/limitrange/strategy_test.go
+1
-2
strategy.go
pkg/registry/namespace/strategy.go
+14
-11
strategy_test.go
pkg/registry/node/strategy_test.go
+1
-1
strategy.go
pkg/registry/persistentvolume/strategy.go
+14
-11
strategy.go
pkg/registry/persistentvolumeclaim/strategy.go
+14
-11
strategy_test.go
pkg/registry/pod/strategy_test.go
+1
-1
strategy_test.go
pkg/registry/podtemplate/strategy_test.go
+1
-2
strategy.go
pkg/registry/resourcequota/strategy.go
+14
-11
strategy.go
pkg/registry/role/strategy.go
+14
-11
strategy.go
pkg/registry/rolebinding/strategy.go
+14
-11
strategy_test.go
pkg/registry/scheduledjob/strategy_test.go
+1
-2
strategy.go
pkg/registry/secret/strategy.go
+14
-11
strategy_test.go
pkg/registry/service/strategy_test.go
+1
-2
strategy.go
pkg/registry/serviceaccount/strategy.go
+14
-11
strategy.go
pkg/registry/thirdpartyresource/strategy.go
+14
-11
strategy.go
pkg/registry/thirdpartyresourcedata/strategy.go
+14
-11
No files found.
examples/apiserver/rest/reststorage.go
View file @
d4afb781
...
@@ -17,6 +17,8 @@ limitations under the License.
...
@@ -17,6 +17,8 @@ limitations under the License.
package
rest
package
rest
import
(
import
(
"fmt"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io"
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/fields"
...
@@ -60,7 +62,17 @@ func NewREST(config *storagebackend.Config, storageDecorator generic.StorageDeco
...
@@ -60,7 +62,17 @@ func NewREST(config *storagebackend.Config, storageDecorator generic.StorageDeco
},
},
// Used to match objects based on labels/fields for list.
// Used to match objects based on labels/fields for list.
PredicateFunc
:
func
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
PredicateFunc
:
func
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
nil
)
return
&
generic
.
SelectionPredicate
{
Label
:
label
,
Field
:
field
,
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
testType
,
ok
:=
obj
.
(
*
testgroup
.
TestType
)
if
!
ok
{
return
nil
,
nil
,
fmt
.
Errorf
(
"unexpected type of given object"
)
}
return
labels
.
Set
(
testType
.
ObjectMeta
.
Labels
),
fields
.
Set
{},
nil
},
}
},
},
Storage
:
storageInterface
,
Storage
:
storageInterface
,
}
}
...
...
federation/registry/cluster/strategy_test.go
View file @
d4afb781
...
@@ -157,7 +157,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
...
@@ -157,7 +157,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Federation
.
GroupVersion
()
.
String
(),
testapi
.
Federation
.
GroupVersion
()
.
String
(),
"Cluster"
,
"Cluster"
,
labels
.
Set
(
ClusterToSelectableFields
(
&
federation
.
Cluster
{})
),
ClusterToSelectableFields
(
&
federation
.
Cluster
{}
),
nil
,
nil
,
)
)
}
}
pkg/api/testing/conversion.go
View file @
d4afb781
...
@@ -20,14 +20,14 @@ import (
...
@@ -20,14 +20,14 @@ import (
"testing"
"testing"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/
label
s"
"k8s.io/kubernetes/pkg/
field
s"
)
)
// TestSelectableFieldLabelConversions verifies that given resource have field
// TestSelectableFieldLabelConversions verifies that given resource have field
// label conversion defined for each its selectable field.
// label conversion defined for each its selectable field.
// fields contains selectable fields of the resource.
// fields contains selectable fields of the resource.
// labelMap maps deprecated labels to their canonical names.
// labelMap maps deprecated labels to their canonical names.
func
TestSelectableFieldLabelConversionsOfKind
(
t
*
testing
.
T
,
apiVersion
string
,
kind
string
,
fields
label
s
.
Set
,
labelMap
map
[
string
]
string
)
{
func
TestSelectableFieldLabelConversionsOfKind
(
t
*
testing
.
T
,
apiVersion
string
,
kind
string
,
fields
field
s
.
Set
,
labelMap
map
[
string
]
string
)
{
badFieldLabels
:=
[]
string
{
badFieldLabels
:=
[]
string
{
"name"
,
"name"
,
".name"
,
".name"
,
...
...
pkg/registry/certificates/strategy.go
View file @
d4afb781
...
@@ -169,17 +169,20 @@ func (csrApprovalStrategy) ValidateUpdate(ctx api.Context, obj, old runtime.Obje
...
@@ -169,17 +169,20 @@ func (csrApprovalStrategy) ValidateUpdate(ctx api.Context, obj, old runtime.Obje
// Matcher returns a generic matcher for a given label and field selector.
// Matcher returns a generic matcher for a given label and field selector.
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
sa
,
ok
:=
obj
.
(
*
certificates
.
CertificateSigningRequest
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a CertificateSigningRequest"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
sa
,
ok
:=
obj
.
(
*
certificates
.
CertificateSigningRequest
)
fields
:=
SelectableFields
(
sa
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
sa
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a CertificateSigningRequest"
)
})
}
}
return
labels
.
Set
(
sa
.
Labels
),
SelectableFields
(
sa
),
nil
},
// SelectableFields returns a label set that can be used for filter selection
}
func
SelectableFields
(
obj
*
certificates
.
CertificateSigningRequest
)
labels
.
Set
{
}
return
labels
.
Set
{}
// SelectableFields returns a field set that can be used for filter selection
func
SelectableFields
(
obj
*
certificates
.
CertificateSigningRequest
)
fields
.
Set
{
return
fields
.
Set
{}
}
}
pkg/registry/clusterrole/strategy.go
View file @
d4afb781
...
@@ -103,17 +103,20 @@ func (s strategy) Export(ctx api.Context, obj runtime.Object, exact bool) error
...
@@ -103,17 +103,20 @@ func (s strategy) Export(ctx api.Context, obj runtime.Object, exact bool) error
// Matcher returns a generic matcher for a given label and field selector.
// Matcher returns a generic matcher for a given label and field selector.
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
sa
,
ok
:=
obj
.
(
*
rbac
.
ClusterRole
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a ClusterRole"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
role
,
ok
:=
obj
.
(
*
rbac
.
ClusterRole
)
fields
:=
SelectableFields
(
sa
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
sa
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a ClusterRole"
)
})
}
return
labels
.
Set
(
role
.
Labels
),
SelectableFields
(
role
),
nil
},
}
}
}
// SelectableFields returns a
label
set that can be used for filter selection
// SelectableFields returns a
field
set that can be used for filter selection
func
SelectableFields
(
obj
*
rbac
.
ClusterRole
)
label
s
.
Set
{
func
SelectableFields
(
obj
*
rbac
.
ClusterRole
)
field
s
.
Set
{
return
label
s
.
Set
{}
return
field
s
.
Set
{}
}
}
pkg/registry/clusterrolebinding/strategy.go
View file @
d4afb781
...
@@ -103,17 +103,20 @@ func (s strategy) Export(ctx api.Context, obj runtime.Object, exact bool) error
...
@@ -103,17 +103,20 @@ func (s strategy) Export(ctx api.Context, obj runtime.Object, exact bool) error
// Matcher returns a generic matcher for a given label and field selector.
// Matcher returns a generic matcher for a given label and field selector.
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
sa
,
ok
:=
obj
.
(
*
rbac
.
ClusterRoleBinding
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a ClusterRoleBinding"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
roleBinding
,
ok
:=
obj
.
(
*
rbac
.
ClusterRoleBinding
)
fields
:=
SelectableFields
(
sa
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
sa
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a ClusterRoleBinding"
)
})
}
return
labels
.
Set
(
roleBinding
.
Labels
),
SelectableFields
(
roleBinding
),
nil
},
}
}
}
// SelectableFields returns a
label
set that can be used for filter selection
// SelectableFields returns a
field
set that can be used for filter selection
func
SelectableFields
(
obj
*
rbac
.
ClusterRoleBinding
)
label
s
.
Set
{
func
SelectableFields
(
obj
*
rbac
.
ClusterRoleBinding
)
field
s
.
Set
{
return
label
s
.
Set
{}
return
field
s
.
Set
{}
}
}
pkg/registry/configmap/strategy_test.go
View file @
d4afb781
...
@@ -22,7 +22,6 @@ import (
...
@@ -22,7 +22,6 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/labels"
)
)
func
TestConfigMapStrategy
(
t
*
testing
.
T
)
{
func
TestConfigMapStrategy
(
t
*
testing
.
T
)
{
...
@@ -74,7 +73,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
...
@@ -74,7 +73,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Default
.
GroupVersion
()
.
String
(),
testapi
.
Default
.
GroupVersion
()
.
String
(),
"ConfigMap"
,
"ConfigMap"
,
labels
.
Set
(
ConfigMapToSelectableFields
(
&
api
.
ConfigMap
{})
),
ConfigMapToSelectableFields
(
&
api
.
ConfigMap
{}
),
nil
,
nil
,
)
)
}
}
pkg/registry/controller/strategy_test.go
View file @
d4afb781
...
@@ -22,7 +22,6 @@ import (
...
@@ -22,7 +22,6 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/labels"
)
)
func
TestControllerStrategy
(
t
*
testing
.
T
)
{
func
TestControllerStrategy
(
t
*
testing
.
T
)
{
...
@@ -146,7 +145,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
...
@@ -146,7 +145,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Default
.
GroupVersion
()
.
String
(),
testapi
.
Default
.
GroupVersion
()
.
String
(),
"ReplicationController"
,
"ReplicationController"
,
labels
.
Set
(
ControllerToSelectableFields
(
&
api
.
ReplicationController
{})
),
ControllerToSelectableFields
(
&
api
.
ReplicationController
{}
),
nil
,
nil
,
)
)
}
}
pkg/registry/daemonset/strategy_test.go
View file @
d4afb781
...
@@ -23,14 +23,13 @@ import (
...
@@ -23,14 +23,13 @@ import (
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/labels"
)
)
func
TestSelectableFieldLabelConversions
(
t
*
testing
.
T
)
{
func
TestSelectableFieldLabelConversions
(
t
*
testing
.
T
)
{
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Extensions
.
GroupVersion
()
.
String
(),
testapi
.
Extensions
.
GroupVersion
()
.
String
(),
"DaemonSet"
,
"DaemonSet"
,
labels
.
Set
(
DaemonSetToSelectableFields
(
&
extensions
.
DaemonSet
{})
),
DaemonSetToSelectableFields
(
&
extensions
.
DaemonSet
{}
),
nil
,
nil
,
)
)
}
}
pkg/registry/deployment/strategy_test.go
View file @
d4afb781
...
@@ -24,7 +24,6 @@ import (
...
@@ -24,7 +24,6 @@ import (
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
)
)
...
@@ -32,7 +31,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
...
@@ -32,7 +31,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Extensions
.
GroupVersion
()
.
String
(),
testapi
.
Extensions
.
GroupVersion
()
.
String
(),
"Deployment"
,
"Deployment"
,
labels
.
Set
(
DeploymentToSelectableFields
(
&
extensions
.
Deployment
{})
),
DeploymentToSelectableFields
(
&
extensions
.
Deployment
{}
),
nil
,
nil
,
)
)
}
}
...
...
pkg/registry/endpoint/strategy_test.go
View file @
d4afb781
...
@@ -22,7 +22,6 @@ import (
...
@@ -22,7 +22,6 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/labels"
)
)
func
TestSelectableFieldLabelConversions
(
t
*
testing
.
T
)
{
func
TestSelectableFieldLabelConversions
(
t
*
testing
.
T
)
{
...
@@ -33,7 +32,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
...
@@ -33,7 +32,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Default
.
GroupVersion
()
.
String
(),
testapi
.
Default
.
GroupVersion
()
.
String
(),
"Endpoints"
,
"Endpoints"
,
labels
.
Set
(
fieldsSet
)
,
fieldsSet
,
nil
,
nil
,
)
)
}
}
pkg/registry/event/strategy_test.go
View file @
d4afb781
...
@@ -94,7 +94,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
...
@@ -94,7 +94,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Default
.
GroupVersion
()
.
String
(),
testapi
.
Default
.
GroupVersion
()
.
String
(),
"Event"
,
"Event"
,
labels
.
Set
(
fset
)
,
fset
,
nil
,
nil
,
)
)
}
}
pkg/registry/generic/matcher.go
View file @
d4afb781
...
@@ -115,50 +115,7 @@ type Matcher interface {
...
@@ -115,50 +115,7 @@ type Matcher interface {
MatcherIndex
()
[]
storage
.
MatchValue
MatcherIndex
()
[]
storage
.
MatchValue
}
}
// MatcherFunc makes a matcher from the provided function. For easy definition
// of matchers for testing. Note: use SelectionPredicate above for real code!
func
MatcherFunc
(
f
func
(
obj
runtime
.
Object
)
(
bool
,
error
))
Matcher
{
return
matcherFunc
(
f
)
}
type
matcherFunc
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
// Matches calls the embedded function.
func
(
m
matcherFunc
)
Matches
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
m
(
obj
)
}
// MatchesSingle always returns "", false-- because this is a predicate
// implementation of Matcher.
func
(
m
matcherFunc
)
MatchesSingle
()
(
string
,
bool
)
{
return
""
,
false
}
// MatcherIndex always returns empty list.
func
(
m
matcherFunc
)
MatcherIndex
()
[]
storage
.
MatchValue
{
return
nil
}
// MatchOnKey returns a matcher that will send only the object matching key
// through the matching function f. For testing!
// Note: use SelectionPredicate above for real code!
func
MatchOnKey
(
key
string
,
f
func
(
obj
runtime
.
Object
)
(
bool
,
error
))
Matcher
{
return
matchKey
{
key
,
f
}
}
type
matchKey
struct
{
key
string
matcherFunc
}
// MatchesSingle always returns its key, true.
func
(
m
matchKey
)
MatchesSingle
()
(
string
,
bool
)
{
return
m
.
key
,
true
}
var
(
var
(
// Assert implementations match the interface.
// Assert implementations match the interface.
_
=
Matcher
(
matchKey
{})
_
=
Matcher
(
&
SelectionPredicate
{})
_
=
Matcher
(
&
SelectionPredicate
{})
_
=
Matcher
(
matcherFunc
(
nil
))
)
)
pkg/registry/generic/matcher_test.go
View file @
d4afb781
...
@@ -117,14 +117,3 @@ func TestSelectionPredicate(t *testing.T) {
...
@@ -117,14 +117,3 @@ func TestSelectionPredicate(t *testing.T) {
}
}
}
}
}
}
func
TestSingleMatch
(
t
*
testing
.
T
)
{
m
:=
MatchOnKey
(
"pod-name-here"
,
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
true
,
nil
})
got
,
ok
:=
m
.
MatchesSingle
()
if
!
ok
{
t
.
Errorf
(
"Expected MatchesSingle to return true"
)
}
if
e
,
a
:=
"pod-name-here"
,
got
;
e
!=
a
{
t
.
Errorf
(
"Expected %#v, got %#v"
,
e
,
a
)
}
}
pkg/registry/horizontalpodautoscaler/strategy_test.go
View file @
d4afb781
...
@@ -23,14 +23,13 @@ import (
...
@@ -23,14 +23,13 @@ import (
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/apis/autoscaling"
"k8s.io/kubernetes/pkg/apis/autoscaling"
"k8s.io/kubernetes/pkg/labels"
)
)
func
TestSelectableFieldLabelConversions
(
t
*
testing
.
T
)
{
func
TestSelectableFieldLabelConversions
(
t
*
testing
.
T
)
{
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Autoscaling
.
GroupVersion
()
.
String
(),
testapi
.
Autoscaling
.
GroupVersion
()
.
String
(),
"Autoscaler"
,
"Autoscaler"
,
labels
.
Set
(
AutoscalerToSelectableFields
(
&
autoscaling
.
HorizontalPodAutoscaler
{})
),
AutoscalerToSelectableFields
(
&
autoscaling
.
HorizontalPodAutoscaler
{}
),
nil
,
nil
,
)
)
}
}
pkg/registry/ingress/strategy_test.go
View file @
d4afb781
...
@@ -23,7 +23,6 @@ import (
...
@@ -23,7 +23,6 @@ import (
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/util/intstr"
"k8s.io/kubernetes/pkg/util/intstr"
)
)
...
@@ -136,7 +135,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
...
@@ -136,7 +135,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Extensions
.
GroupVersion
()
.
String
(),
testapi
.
Extensions
.
GroupVersion
()
.
String
(),
"Ingress"
,
"Ingress"
,
labels
.
Set
(
IngressToSelectableFields
(
&
extensions
.
Ingress
{})
),
IngressToSelectableFields
(
&
extensions
.
Ingress
{}
),
nil
,
nil
,
)
)
}
}
pkg/registry/job/strategy_test.go
View file @
d4afb781
...
@@ -25,7 +25,6 @@ import (
...
@@ -25,7 +25,6 @@ import (
apitesting
"k8s.io/kubernetes/pkg/api/testing"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/types"
"k8s.io/kubernetes/pkg/types"
)
)
...
@@ -226,7 +225,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
...
@@ -226,7 +225,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Extensions
.
GroupVersion
()
.
String
(),
testapi
.
Extensions
.
GroupVersion
()
.
String
(),
"Job"
,
"Job"
,
labels
.
Set
(
JobToSelectableFields
(
&
batch
.
Job
{})
),
JobToSelectableFields
(
&
batch
.
Job
{}
),
nil
,
nil
,
)
)
}
}
pkg/registry/limitrange/strategy_test.go
View file @
d4afb781
...
@@ -22,14 +22,13 @@ import (
...
@@ -22,14 +22,13 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/labels"
)
)
func
TestSelectableFieldLabelConversions
(
t
*
testing
.
T
)
{
func
TestSelectableFieldLabelConversions
(
t
*
testing
.
T
)
{
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Default
.
GroupVersion
()
.
String
(),
testapi
.
Default
.
GroupVersion
()
.
String
(),
"LimitRange"
,
"LimitRange"
,
labels
.
Set
(
LimitRangeToSelectableFields
(
&
api
.
LimitRange
{})
),
LimitRangeToSelectableFields
(
&
api
.
LimitRange
{}
),
nil
,
nil
,
)
)
}
}
pkg/registry/namespace/strategy.go
View file @
d4afb781
...
@@ -136,23 +136,26 @@ func (namespaceFinalizeStrategy) PrepareForUpdate(ctx api.Context, obj, old runt
...
@@ -136,23 +136,26 @@ func (namespaceFinalizeStrategy) PrepareForUpdate(ctx api.Context, obj, old runt
// MatchNamespace returns a generic matcher for a given label and field selector.
// MatchNamespace returns a generic matcher for a given label and field selector.
func
MatchNamespace
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
MatchNamespace
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
namespaceObj
,
ok
:=
obj
.
(
*
api
.
Namespace
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a namespace"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
namespaceObj
,
ok
:=
obj
.
(
*
api
.
Namespace
)
fields
:=
NamespaceToSelectableFields
(
namespaceObj
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
namespaceObj
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a namespace"
)
})
}
return
labels
.
Set
(
namespaceObj
.
Labels
),
NamespaceToSelectableFields
(
namespaceObj
),
nil
},
}
}
}
// NamespaceToSelectableFields returns a
label
set that represents the object
// NamespaceToSelectableFields returns a
field
set that represents the object
func
NamespaceToSelectableFields
(
namespace
*
api
.
Namespace
)
label
s
.
Set
{
func
NamespaceToSelectableFields
(
namespace
*
api
.
Namespace
)
field
s
.
Set
{
objectMetaFieldsSet
:=
generic
.
ObjectMetaFieldsSet
(
namespace
.
ObjectMeta
,
false
)
objectMetaFieldsSet
:=
generic
.
ObjectMetaFieldsSet
(
namespace
.
ObjectMeta
,
false
)
specificFieldsSet
:=
fields
.
Set
{
specificFieldsSet
:=
fields
.
Set
{
"status.phase"
:
string
(
namespace
.
Status
.
Phase
),
"status.phase"
:
string
(
namespace
.
Status
.
Phase
),
// This is a bug, but we need to support it for backward compatibility.
// This is a bug, but we need to support it for backward compatibility.
"name"
:
namespace
.
Name
,
"name"
:
namespace
.
Name
,
}
}
return
labels
.
Set
(
generic
.
MergeFieldsSets
(
objectMetaFieldsSet
,
specificFieldsSet
)
)
return
generic
.
MergeFieldsSets
(
objectMetaFieldsSet
,
specificFieldsSet
)
}
}
pkg/registry/node/strategy_test.go
View file @
d4afb781
...
@@ -51,7 +51,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
...
@@ -51,7 +51,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Default
.
GroupVersion
()
.
String
(),
testapi
.
Default
.
GroupVersion
()
.
String
(),
"Node"
,
"Node"
,
labels
.
Set
(
NodeToSelectableFields
(
&
api
.
Node
{})
),
NodeToSelectableFields
(
&
api
.
Node
{}
),
nil
,
nil
,
)
)
}
}
pkg/registry/persistentvolume/strategy.go
View file @
d4afb781
...
@@ -96,22 +96,25 @@ func (persistentvolumeStatusStrategy) ValidateUpdate(ctx api.Context, obj, old r
...
@@ -96,22 +96,25 @@ func (persistentvolumeStatusStrategy) ValidateUpdate(ctx api.Context, obj, old r
// MatchPersistentVolume returns a generic matcher for a given label and field selector.
// MatchPersistentVolume returns a generic matcher for a given label and field selector.
func
MatchPersistentVolumes
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
MatchPersistentVolumes
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
persistentvolumeObj
,
ok
:=
obj
.
(
*
api
.
PersistentVolume
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a persistentvolume"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
persistentvolumeObj
,
ok
:=
obj
.
(
*
api
.
PersistentVolume
)
fields
:=
PersistentVolumeToSelectableFields
(
persistentvolumeObj
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
persistentvolumeObj
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a persistentvolume"
)
})
}
return
labels
.
Set
(
persistentvolumeObj
.
Labels
),
PersistentVolumeToSelectableFields
(
persistentvolumeObj
),
nil
},
}
}
}
// PersistentVolumeToSelectableFields returns a
label
set that represents the object
// PersistentVolumeToSelectableFields returns a
field
set that represents the object
func
PersistentVolumeToSelectableFields
(
persistentvolume
*
api
.
PersistentVolume
)
label
s
.
Set
{
func
PersistentVolumeToSelectableFields
(
persistentvolume
*
api
.
PersistentVolume
)
field
s
.
Set
{
objectMetaFieldsSet
:=
generic
.
ObjectMetaFieldsSet
(
persistentvolume
.
ObjectMeta
,
false
)
objectMetaFieldsSet
:=
generic
.
ObjectMetaFieldsSet
(
persistentvolume
.
ObjectMeta
,
false
)
specificFieldsSet
:=
fields
.
Set
{
specificFieldsSet
:=
fields
.
Set
{
// This is a bug, but we need to support it for backward compatibility.
// This is a bug, but we need to support it for backward compatibility.
"name"
:
persistentvolume
.
Name
,
"name"
:
persistentvolume
.
Name
,
}
}
return
labels
.
Set
(
generic
.
MergeFieldsSets
(
objectMetaFieldsSet
,
specificFieldsSet
)
)
return
generic
.
MergeFieldsSets
(
objectMetaFieldsSet
,
specificFieldsSet
)
}
}
pkg/registry/persistentvolumeclaim/strategy.go
View file @
d4afb781
...
@@ -96,22 +96,25 @@ func (persistentvolumeclaimStatusStrategy) ValidateUpdate(ctx api.Context, obj,
...
@@ -96,22 +96,25 @@ func (persistentvolumeclaimStatusStrategy) ValidateUpdate(ctx api.Context, obj,
// MatchPersistentVolumeClaim returns a generic matcher for a given label and field selector.
// MatchPersistentVolumeClaim returns a generic matcher for a given label and field selector.
func
MatchPersistentVolumeClaim
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
MatchPersistentVolumeClaim
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
persistentvolumeclaimObj
,
ok
:=
obj
.
(
*
api
.
PersistentVolumeClaim
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a persistentvolumeclaim"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
persistentvolumeclaimObj
,
ok
:=
obj
.
(
*
api
.
PersistentVolumeClaim
)
fields
:=
PersistentVolumeClaimToSelectableFields
(
persistentvolumeclaimObj
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
persistentvolumeclaimObj
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a persistentvolumeclaim"
)
})
}
return
labels
.
Set
(
persistentvolumeclaimObj
.
Labels
),
PersistentVolumeClaimToSelectableFields
(
persistentvolumeclaimObj
),
nil
},
}
}
}
// PersistentVolumeClaimToSelectableFields returns a
label
set that represents the object
// PersistentVolumeClaimToSelectableFields returns a
field
set that represents the object
func
PersistentVolumeClaimToSelectableFields
(
persistentvolumeclaim
*
api
.
PersistentVolumeClaim
)
label
s
.
Set
{
func
PersistentVolumeClaimToSelectableFields
(
persistentvolumeclaim
*
api
.
PersistentVolumeClaim
)
field
s
.
Set
{
objectMetaFieldsSet
:=
generic
.
ObjectMetaFieldsSet
(
persistentvolumeclaim
.
ObjectMeta
,
true
)
objectMetaFieldsSet
:=
generic
.
ObjectMetaFieldsSet
(
persistentvolumeclaim
.
ObjectMeta
,
true
)
specificFieldsSet
:=
fields
.
Set
{
specificFieldsSet
:=
fields
.
Set
{
// This is a bug, but we need to support it for backward compatibility.
// This is a bug, but we need to support it for backward compatibility.
"name"
:
persistentvolumeclaim
.
Name
,
"name"
:
persistentvolumeclaim
.
Name
,
}
}
return
labels
.
Set
(
generic
.
MergeFieldsSets
(
objectMetaFieldsSet
,
specificFieldsSet
)
)
return
generic
.
MergeFieldsSets
(
objectMetaFieldsSet
,
specificFieldsSet
)
}
}
pkg/registry/pod/strategy_test.go
View file @
d4afb781
...
@@ -252,7 +252,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
...
@@ -252,7 +252,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Default
.
GroupVersion
()
.
String
(),
testapi
.
Default
.
GroupVersion
()
.
String
(),
"Pod"
,
"Pod"
,
labels
.
Set
(
PodToSelectableFields
(
&
api
.
Pod
{})
),
PodToSelectableFields
(
&
api
.
Pod
{}
),
nil
,
nil
,
)
)
}
}
pkg/registry/podtemplate/strategy_test.go
View file @
d4afb781
...
@@ -22,14 +22,13 @@ import (
...
@@ -22,14 +22,13 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/labels"
)
)
func
TestSelectableFieldLabelConversions
(
t
*
testing
.
T
)
{
func
TestSelectableFieldLabelConversions
(
t
*
testing
.
T
)
{
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Default
.
GroupVersion
()
.
String
(),
testapi
.
Default
.
GroupVersion
()
.
String
(),
"PodTemplate"
,
"PodTemplate"
,
labels
.
Set
(
PodTemplateToSelectableFields
(
&
api
.
PodTemplate
{})
),
PodTemplateToSelectableFields
(
&
api
.
PodTemplate
{}
),
nil
,
nil
,
)
)
}
}
pkg/registry/resourcequota/strategy.go
View file @
d4afb781
...
@@ -99,17 +99,20 @@ func (resourcequotaStatusStrategy) ValidateUpdate(ctx api.Context, obj, old runt
...
@@ -99,17 +99,20 @@ func (resourcequotaStatusStrategy) ValidateUpdate(ctx api.Context, obj, old runt
// MatchResourceQuota returns a generic matcher for a given label and field selector.
// MatchResourceQuota returns a generic matcher for a given label and field selector.
func
MatchResourceQuota
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
MatchResourceQuota
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
resourcequotaObj
,
ok
:=
obj
.
(
*
api
.
ResourceQuota
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a resourcequota"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
resourcequotaObj
,
ok
:=
obj
.
(
*
api
.
ResourceQuota
)
fields
:=
ResourceQuotaToSelectableFields
(
resourcequotaObj
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
resourcequotaObj
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a resourcequota"
)
})
}
return
labels
.
Set
(
resourcequotaObj
.
Labels
),
ResourceQuotaToSelectableFields
(
resourcequotaObj
),
nil
},
}
}
}
// ResourceQuotaToSelectableFields returns a
label
set that represents the object
// ResourceQuotaToSelectableFields returns a
field
set that represents the object
func
ResourceQuotaToSelectableFields
(
resourcequota
*
api
.
ResourceQuota
)
label
s
.
Set
{
func
ResourceQuotaToSelectableFields
(
resourcequota
*
api
.
ResourceQuota
)
field
s
.
Set
{
return
labels
.
Set
(
generic
.
ObjectMetaFieldsSet
(
resourcequota
.
ObjectMeta
,
true
)
)
return
generic
.
ObjectMetaFieldsSet
(
resourcequota
.
ObjectMeta
,
true
)
}
}
pkg/registry/role/strategy.go
View file @
d4afb781
...
@@ -103,17 +103,20 @@ func (s strategy) Export(ctx api.Context, obj runtime.Object, exact bool) error
...
@@ -103,17 +103,20 @@ func (s strategy) Export(ctx api.Context, obj runtime.Object, exact bool) error
// Matcher returns a generic matcher for a given label and field selector.
// Matcher returns a generic matcher for a given label and field selector.
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
sa
,
ok
:=
obj
.
(
*
rbac
.
Role
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a Role"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
role
,
ok
:=
obj
.
(
*
rbac
.
Role
)
fields
:=
SelectableFields
(
sa
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
sa
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a Role"
)
})
}
return
labels
.
Set
(
role
.
Labels
),
SelectableFields
(
role
),
nil
},
}
}
}
// SelectableFields returns a
label
set that can be used for filter selection
// SelectableFields returns a
field
set that can be used for filter selection
func
SelectableFields
(
obj
*
rbac
.
Role
)
label
s
.
Set
{
func
SelectableFields
(
obj
*
rbac
.
Role
)
field
s
.
Set
{
return
label
s
.
Set
{}
return
field
s
.
Set
{}
}
}
pkg/registry/rolebinding/strategy.go
View file @
d4afb781
...
@@ -103,17 +103,20 @@ func (s strategy) Export(ctx api.Context, obj runtime.Object, exact bool) error
...
@@ -103,17 +103,20 @@ func (s strategy) Export(ctx api.Context, obj runtime.Object, exact bool) error
// Matcher returns a generic matcher for a given label and field selector.
// Matcher returns a generic matcher for a given label and field selector.
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
sa
,
ok
:=
obj
.
(
*
rbac
.
RoleBinding
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a RoleBinding"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
roleBinding
,
ok
:=
obj
.
(
*
rbac
.
RoleBinding
)
fields
:=
SelectableFields
(
sa
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
sa
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a RoleBinding"
)
})
}
return
labels
.
Set
(
roleBinding
.
Labels
),
SelectableFields
(
roleBinding
),
nil
},
}
}
}
// SelectableFields returns a
label
set that can be used for filter selection
// SelectableFields returns a
field
set that can be used for filter selection
func
SelectableFields
(
obj
*
rbac
.
RoleBinding
)
label
s
.
Set
{
func
SelectableFields
(
obj
*
rbac
.
RoleBinding
)
field
s
.
Set
{
return
label
s
.
Set
{}
return
field
s
.
Set
{}
}
}
pkg/registry/scheduledjob/strategy_test.go
View file @
d4afb781
...
@@ -23,7 +23,6 @@ import (
...
@@ -23,7 +23,6 @@ import (
apitesting
"k8s.io/kubernetes/pkg/api/testing"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/labels"
)
)
func
newBool
(
a
bool
)
*
bool
{
func
newBool
(
a
bool
)
*
bool
{
...
@@ -168,7 +167,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
...
@@ -168,7 +167,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
"batch/v2alpha1"
,
"batch/v2alpha1"
,
"ScheduledJob"
,
"ScheduledJob"
,
labels
.
Set
(
ScheduledJobToSelectableFields
(
&
batch
.
ScheduledJob
{})
),
ScheduledJobToSelectableFields
(
&
batch
.
ScheduledJob
{}
),
nil
,
nil
,
)
)
}
}
pkg/registry/secret/strategy.go
View file @
d4afb781
...
@@ -95,21 +95,24 @@ func (s strategy) Export(ctx api.Context, obj runtime.Object, exact bool) error
...
@@ -95,21 +95,24 @@ func (s strategy) Export(ctx api.Context, obj runtime.Object, exact bool) error
// Matcher returns a generic matcher for a given label and field selector.
// Matcher returns a generic matcher for a given label and field selector.
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
sa
,
ok
:=
obj
.
(
*
api
.
Secret
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a secret"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
secret
,
ok
:=
obj
.
(
*
api
.
Secret
)
fields
:=
SelectableFields
(
sa
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
sa
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a secret"
)
})
}
return
labels
.
Set
(
secret
.
Labels
),
SelectableFields
(
secret
),
nil
},
}
}
}
// SelectableFields returns a
label
set that can be used for filter selection
// SelectableFields returns a
field
set that can be used for filter selection
func
SelectableFields
(
obj
*
api
.
Secret
)
label
s
.
Set
{
func
SelectableFields
(
obj
*
api
.
Secret
)
field
s
.
Set
{
objectMetaFieldsSet
:=
generic
.
ObjectMetaFieldsSet
(
obj
.
ObjectMeta
,
true
)
objectMetaFieldsSet
:=
generic
.
ObjectMetaFieldsSet
(
obj
.
ObjectMeta
,
true
)
secretSpecificFieldsSet
:=
fields
.
Set
{
secretSpecificFieldsSet
:=
fields
.
Set
{
"type"
:
string
(
obj
.
Type
),
"type"
:
string
(
obj
.
Type
),
}
}
return
labels
.
Set
(
generic
.
MergeFieldsSets
(
objectMetaFieldsSet
,
secretSpecificFieldsSet
)
)
return
generic
.
MergeFieldsSets
(
objectMetaFieldsSet
,
secretSpecificFieldsSet
)
}
}
pkg/registry/service/strategy_test.go
View file @
d4afb781
...
@@ -25,7 +25,6 @@ import (
...
@@ -25,7 +25,6 @@ import (
"k8s.io/kubernetes/pkg/api/rest"
"k8s.io/kubernetes/pkg/api/rest"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
apitesting
"k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util/intstr"
"k8s.io/kubernetes/pkg/util/intstr"
)
)
...
@@ -216,7 +215,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
...
@@ -216,7 +215,7 @@ func TestSelectableFieldLabelConversions(t *testing.T) {
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
apitesting
.
TestSelectableFieldLabelConversionsOfKind
(
t
,
testapi
.
Default
.
GroupVersion
()
.
String
(),
testapi
.
Default
.
GroupVersion
()
.
String
(),
"Service"
,
"Service"
,
labels
.
Set
(
ServiceToSelectableFields
(
&
api
.
Service
{})
),
ServiceToSelectableFields
(
&
api
.
Service
{}
),
nil
,
nil
,
)
)
}
}
...
...
pkg/registry/serviceaccount/strategy.go
View file @
d4afb781
...
@@ -78,17 +78,20 @@ func (strategy) AllowUnconditionalUpdate() bool {
...
@@ -78,17 +78,20 @@ func (strategy) AllowUnconditionalUpdate() bool {
// Matcher returns a generic matcher for a given label and field selector.
// Matcher returns a generic matcher for a given label and field selector.
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
sa
,
ok
:=
obj
.
(
*
api
.
ServiceAccount
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a serviceaccount"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
sa
,
ok
:=
obj
.
(
*
api
.
ServiceAccount
)
fields
:=
SelectableFields
(
sa
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
sa
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a serviceaccount"
)
})
}
return
labels
.
Set
(
sa
.
Labels
),
SelectableFields
(
sa
),
nil
},
}
}
}
// SelectableFields returns a
label
set that represents the object
// SelectableFields returns a
field
set that represents the object
func
SelectableFields
(
obj
*
api
.
ServiceAccount
)
label
s
.
Set
{
func
SelectableFields
(
obj
*
api
.
ServiceAccount
)
field
s
.
Set
{
return
labels
.
Set
(
generic
.
ObjectMetaFieldsSet
(
obj
.
ObjectMeta
,
true
)
)
return
generic
.
ObjectMetaFieldsSet
(
obj
.
ObjectMeta
,
true
)
}
}
pkg/registry/thirdpartyresource/strategy.go
View file @
d4afb781
...
@@ -79,17 +79,20 @@ func (strategy) AllowUnconditionalUpdate() bool {
...
@@ -79,17 +79,20 @@ func (strategy) AllowUnconditionalUpdate() bool {
// Matcher returns a generic matcher for a given label and field selector.
// Matcher returns a generic matcher for a given label and field selector.
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
sa
,
ok
:=
obj
.
(
*
extensions
.
ThirdPartyResource
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a ThirdPartyResource"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
tpr
,
ok
:=
obj
.
(
*
extensions
.
ThirdPartyResource
)
fields
:=
SelectableFields
(
sa
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
sa
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a ThirdPartyResource"
)
})
}
return
labels
.
Set
(
tpr
.
Labels
),
SelectableFields
(
tpr
),
nil
},
}
}
}
// SelectableFields returns a
label
set that can be used for filter selection
// SelectableFields returns a
field
set that can be used for filter selection
func
SelectableFields
(
obj
*
extensions
.
ThirdPartyResource
)
label
s
.
Set
{
func
SelectableFields
(
obj
*
extensions
.
ThirdPartyResource
)
field
s
.
Set
{
return
label
s
.
Set
{}
return
field
s
.
Set
{}
}
}
pkg/registry/thirdpartyresourcedata/strategy.go
View file @
d4afb781
...
@@ -76,17 +76,20 @@ func (strategy) AllowUnconditionalUpdate() bool {
...
@@ -76,17 +76,20 @@ func (strategy) AllowUnconditionalUpdate() bool {
// Matcher returns a generic matcher for a given label and field selector.
// Matcher returns a generic matcher for a given label and field selector.
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
generic
.
Matcher
{
return
generic
.
MatcherFunc
(
func
(
obj
runtime
.
Object
)
(
bool
,
error
)
{
return
&
generic
.
SelectionPredicate
{
sa
,
ok
:=
obj
.
(
*
extensions
.
ThirdPartyResourceData
)
Label
:
label
,
if
!
ok
{
Field
:
field
,
return
false
,
fmt
.
Errorf
(
"not a ThirdPartyResourceData"
)
GetAttrs
:
func
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
error
)
{
}
tprd
,
ok
:=
obj
.
(
*
extensions
.
ThirdPartyResourceData
)
fields
:=
SelectableFields
(
sa
)
if
!
ok
{
return
label
.
Matches
(
labels
.
Set
(
sa
.
Labels
))
&&
field
.
Matches
(
fields
),
nil
return
nil
,
nil
,
fmt
.
Errorf
(
"not a ThirdPartyResourceData"
)
})
}
return
labels
.
Set
(
tprd
.
Labels
),
SelectableFields
(
tprd
),
nil
},
}
}
}
// SelectableFields returns a
label
set that can be used for filter selection
// SelectableFields returns a
field
set that can be used for filter selection
func
SelectableFields
(
obj
*
extensions
.
ThirdPartyResourceData
)
label
s
.
Set
{
func
SelectableFields
(
obj
*
extensions
.
ThirdPartyResourceData
)
field
s
.
Set
{
return
label
s
.
Set
{}
return
field
s
.
Set
{}
}
}
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