mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Merge pull request #17369 from wojtek-t/use_unversioned_list_options
Auto commit by PR queue bot
This commit is contained in:
commit
f3753c02ed
@ -81,6 +81,60 @@ func init() {
|
|||||||
*out = (*in).String()
|
*out = (*in).String()
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
func(in *string, out *unversioned.LabelSelector, s conversion.Scope) error {
|
||||||
|
selector, err := labels.Parse(*in)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*out = unversioned.LabelSelector{selector}
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
func(in *string, out *unversioned.FieldSelector, s conversion.Scope) error {
|
||||||
|
selector, err := fields.ParseSelector(*in)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*out = unversioned.FieldSelector{selector}
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
func(in *[]string, out *unversioned.LabelSelector, s conversion.Scope) error {
|
||||||
|
selectorString := ""
|
||||||
|
if len(*in) > 0 {
|
||||||
|
selectorString = (*in)[0]
|
||||||
|
}
|
||||||
|
selector, err := labels.Parse(selectorString)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*out = unversioned.LabelSelector{selector}
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
func(in *[]string, out *unversioned.FieldSelector, s conversion.Scope) error {
|
||||||
|
selectorString := ""
|
||||||
|
if len(*in) > 0 {
|
||||||
|
selectorString = (*in)[0]
|
||||||
|
}
|
||||||
|
selector, err := fields.ParseSelector(selectorString)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*out = unversioned.FieldSelector{selector}
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
func(in *unversioned.LabelSelector, out *string, s conversion.Scope) error {
|
||||||
|
if in.Selector == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
*out = in.Selector.String()
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
func(in *unversioned.FieldSelector, out *string, s conversion.Scope) error {
|
||||||
|
if in.Selector == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
*out = in.Selector.String()
|
||||||
|
return nil
|
||||||
|
},
|
||||||
func(in *resource.Quantity, out *resource.Quantity, s conversion.Scope) error {
|
func(in *resource.Quantity, out *resource.Quantity, s conversion.Scope) error {
|
||||||
// Cannot deep copy these, because inf.Dec has unexported fields.
|
// Cannot deep copy these, because inf.Dec has unexported fields.
|
||||||
*out = *in.Copy()
|
*out = *in.Copy()
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
@ -60,7 +61,7 @@ type Lister interface {
|
|||||||
// This object must be a pointer type for use with Codec.DecodeInto([]byte, runtime.Object)
|
// This object must be a pointer type for use with Codec.DecodeInto([]byte, runtime.Object)
|
||||||
NewList() runtime.Object
|
NewList() runtime.Object
|
||||||
// List selects resources in the storage which match to the selector. 'options' can be nil.
|
// List selects resources in the storage which match to the selector. 'options' can be nil.
|
||||||
List(ctx api.Context, options *api.ListOptions) (runtime.Object, error)
|
List(ctx api.Context, options *unversioned.ListOptions) (runtime.Object, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Getter is an object that can retrieve a named RESTful resource.
|
// Getter is an object that can retrieve a named RESTful resource.
|
||||||
@ -181,7 +182,7 @@ type Watcher interface {
|
|||||||
// are supported; an error should be returned if 'field' tries to select on a field that
|
// are supported; an error should be returned if 'field' tries to select on a field that
|
||||||
// isn't supported. 'resourceVersion' allows for continuing/starting a watch at a
|
// isn't supported. 'resourceVersion' allows for continuing/starting a watch at a
|
||||||
// particular version.
|
// particular version.
|
||||||
Watch(ctx api.Context, options *api.ListOptions) (watch.Interface, error)
|
Watch(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// StandardStorage is an interface covering the common verbs. Provided for testing whether a
|
// StandardStorage is an interface covering the common verbs. Provided for testing whether a
|
||||||
|
@ -864,7 +864,7 @@ func (t *Tester) testListMatchLabels(obj runtime.Object, assignFn AssignFunc) {
|
|||||||
filtered := []runtime.Object{objs[1]}
|
filtered := []runtime.Object{objs[1]}
|
||||||
|
|
||||||
selector := labels.SelectorFromSet(labels.Set(testLabels))
|
selector := labels.SelectorFromSet(labels.Set(testLabels))
|
||||||
options := &api.ListOptions{LabelSelector: selector}
|
options := &unversioned.ListOptions{LabelSelector: unversioned.LabelSelector{selector}}
|
||||||
listObj, err := t.storage.(rest.Lister).List(ctx, options)
|
listObj, err := t.storage.(rest.Lister).List(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
@ -906,7 +906,7 @@ func (t *Tester) testWatchFields(obj runtime.Object, emitFn EmitFunc, fieldsPass
|
|||||||
|
|
||||||
for _, field := range fieldsPass {
|
for _, field := range fieldsPass {
|
||||||
for _, action := range actions {
|
for _, action := range actions {
|
||||||
options := &api.ListOptions{FieldSelector: field.AsSelector(), ResourceVersion: "1"}
|
options := &unversioned.ListOptions{FieldSelector: unversioned.FieldSelector{field.AsSelector()}, ResourceVersion: "1"}
|
||||||
watcher, err := t.storage.(rest.Watcher).Watch(ctx, options)
|
watcher, err := t.storage.(rest.Watcher).Watch(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v, %v", err, action)
|
t.Errorf("unexpected error: %v, %v", err, action)
|
||||||
@ -930,7 +930,7 @@ func (t *Tester) testWatchFields(obj runtime.Object, emitFn EmitFunc, fieldsPass
|
|||||||
|
|
||||||
for _, field := range fieldsFail {
|
for _, field := range fieldsFail {
|
||||||
for _, action := range actions {
|
for _, action := range actions {
|
||||||
options := &api.ListOptions{FieldSelector: field.AsSelector(), ResourceVersion: "1"}
|
options := &unversioned.ListOptions{FieldSelector: unversioned.FieldSelector{field.AsSelector()}, ResourceVersion: "1"}
|
||||||
watcher, err := t.storage.(rest.Watcher).Watch(ctx, options)
|
watcher, err := t.storage.(rest.Watcher).Watch(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
@ -955,7 +955,7 @@ func (t *Tester) testWatchLabels(obj runtime.Object, emitFn EmitFunc, labelsPass
|
|||||||
|
|
||||||
for _, label := range labelsPass {
|
for _, label := range labelsPass {
|
||||||
for _, action := range actions {
|
for _, action := range actions {
|
||||||
options := &api.ListOptions{LabelSelector: label.AsSelector(), ResourceVersion: "1"}
|
options := &unversioned.ListOptions{LabelSelector: unversioned.LabelSelector{label.AsSelector()}, ResourceVersion: "1"}
|
||||||
watcher, err := t.storage.(rest.Watcher).Watch(ctx, options)
|
watcher, err := t.storage.(rest.Watcher).Watch(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
@ -978,7 +978,7 @@ func (t *Tester) testWatchLabels(obj runtime.Object, emitFn EmitFunc, labelsPass
|
|||||||
|
|
||||||
for _, label := range labelsFail {
|
for _, label := range labelsFail {
|
||||||
for _, action := range actions {
|
for _, action := range actions {
|
||||||
options := &api.ListOptions{LabelSelector: label.AsSelector(), ResourceVersion: "1"}
|
options := &unversioned.ListOptions{LabelSelector: unversioned.LabelSelector{label.AsSelector()}, ResourceVersion: "1"}
|
||||||
watcher, err := t.storage.(rest.Watcher).Watch(ctx, options)
|
watcher, err := t.storage.(rest.Watcher).Watch(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
|
@ -91,6 +91,13 @@ func FuzzerFor(t *testing.T, version string, src rand.Source) *fuzz.Fuzzer {
|
|||||||
j.LabelSelector, _ = labels.Parse("a=b")
|
j.LabelSelector, _ = labels.Parse("a=b")
|
||||||
j.FieldSelector, _ = fields.ParseSelector("a=b")
|
j.FieldSelector, _ = fields.ParseSelector("a=b")
|
||||||
},
|
},
|
||||||
|
func(j *unversioned.ListOptions, c fuzz.Continue) {
|
||||||
|
// TODO: add some parsing
|
||||||
|
label, _ := labels.Parse("a=b")
|
||||||
|
j.LabelSelector = unversioned.LabelSelector{label}
|
||||||
|
field, _ := fields.ParseSelector("a=b")
|
||||||
|
j.FieldSelector = unversioned.FieldSelector{field}
|
||||||
|
},
|
||||||
func(s *api.PodSpec, c fuzz.Continue) {
|
func(s *api.PodSpec, c fuzz.Continue) {
|
||||||
c.FuzzNoCustom(s)
|
c.FuzzNoCustom(s)
|
||||||
// has a default value
|
// has a default value
|
||||||
|
@ -112,50 +112,23 @@ func newMapper() *meta.DefaultRESTMapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func addGrouplessTypes() {
|
func addGrouplessTypes() {
|
||||||
type ListOptions struct {
|
|
||||||
runtime.Object
|
|
||||||
unversioned.TypeMeta `json:",inline"`
|
|
||||||
LabelSelector string `json:"labelSelector,omitempty"`
|
|
||||||
FieldSelector string `json:"fieldSelector,omitempty"`
|
|
||||||
Watch bool `json:"watch,omitempty"`
|
|
||||||
ResourceVersion string `json:"resourceVersion,omitempty"`
|
|
||||||
TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty"`
|
|
||||||
}
|
|
||||||
api.Scheme.AddKnownTypes(
|
api.Scheme.AddKnownTypes(
|
||||||
grouplessGroupVersion.String(), &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &unversioned.Status{},
|
grouplessGroupVersion.String(), &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &unversioned.Status{},
|
||||||
&ListOptions{}, &api.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{})
|
&unversioned.ListOptions{}, &api.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{})
|
||||||
api.Scheme.AddKnownTypes(grouplessGroupVersion.String(), &api.Pod{})
|
api.Scheme.AddKnownTypes(grouplessGroupVersion.String(), &api.Pod{})
|
||||||
}
|
}
|
||||||
|
|
||||||
func addTestTypes() {
|
func addTestTypes() {
|
||||||
type ListOptions struct {
|
|
||||||
runtime.Object
|
|
||||||
unversioned.TypeMeta `json:",inline"`
|
|
||||||
LabelSelector string `json:"labels,omitempty"`
|
|
||||||
FieldSelector string `json:"fields,omitempty"`
|
|
||||||
Watch bool `json:"watch,omitempty"`
|
|
||||||
ResourceVersion string `json:"resourceVersion,omitempty"`
|
|
||||||
TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty"`
|
|
||||||
}
|
|
||||||
api.Scheme.AddKnownTypes(
|
api.Scheme.AddKnownTypes(
|
||||||
testGroupVersion.String(), &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &unversioned.Status{},
|
testGroupVersion.String(), &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &unversioned.Status{},
|
||||||
&ListOptions{}, &api.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{})
|
&unversioned.ListOptions{}, &api.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{})
|
||||||
api.Scheme.AddKnownTypes(testGroupVersion.String(), &api.Pod{})
|
api.Scheme.AddKnownTypes(testGroupVersion.String(), &api.Pod{})
|
||||||
}
|
}
|
||||||
|
|
||||||
func addNewTestTypes() {
|
func addNewTestTypes() {
|
||||||
type ListOptions struct {
|
|
||||||
runtime.Object
|
|
||||||
unversioned.TypeMeta `json:",inline"`
|
|
||||||
LabelSelector string `json:"labelSelector,omitempty"`
|
|
||||||
FieldSelector string `json:"fieldSelector,omitempty"`
|
|
||||||
Watch bool `json:"watch,omitempty"`
|
|
||||||
ResourceVersion string `json:"resourceVersion,omitempty"`
|
|
||||||
TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty"`
|
|
||||||
}
|
|
||||||
api.Scheme.AddKnownTypes(
|
api.Scheme.AddKnownTypes(
|
||||||
newGroupVersion.String(), &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &unversioned.Status{},
|
newGroupVersion.String(), &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &unversioned.Status{},
|
||||||
&ListOptions{}, &api.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{})
|
&unversioned.ListOptions{}, &api.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{})
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -165,7 +138,7 @@ func init() {
|
|||||||
// "internal" version
|
// "internal" version
|
||||||
api.Scheme.AddKnownTypes(
|
api.Scheme.AddKnownTypes(
|
||||||
"", &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &unversioned.Status{},
|
"", &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &unversioned.Status{},
|
||||||
&api.ListOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{})
|
&unversioned.ListOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{})
|
||||||
addGrouplessTypes()
|
addGrouplessTypes()
|
||||||
addTestTypes()
|
addTestTypes()
|
||||||
addNewTestTypes()
|
addNewTestTypes()
|
||||||
@ -363,18 +336,18 @@ type SimpleRESTStorage struct {
|
|||||||
injectedFunction func(obj runtime.Object) (returnObj runtime.Object, err error)
|
injectedFunction func(obj runtime.Object) (returnObj runtime.Object, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (storage *SimpleRESTStorage) List(ctx api.Context, options *api.ListOptions) (runtime.Object, error) {
|
func (storage *SimpleRESTStorage) List(ctx api.Context, options *unversioned.ListOptions) (runtime.Object, error) {
|
||||||
storage.checkContext(ctx)
|
storage.checkContext(ctx)
|
||||||
result := &apiservertesting.SimpleList{
|
result := &apiservertesting.SimpleList{
|
||||||
Items: storage.list,
|
Items: storage.list,
|
||||||
}
|
}
|
||||||
storage.requestedLabelSelector = labels.Everything()
|
storage.requestedLabelSelector = labels.Everything()
|
||||||
if options != nil && options.LabelSelector != nil {
|
if options != nil && options.LabelSelector.Selector != nil {
|
||||||
storage.requestedLabelSelector = options.LabelSelector
|
storage.requestedLabelSelector = options.LabelSelector.Selector
|
||||||
}
|
}
|
||||||
storage.requestedFieldSelector = fields.Everything()
|
storage.requestedFieldSelector = fields.Everything()
|
||||||
if options != nil && options.FieldSelector != nil {
|
if options != nil && options.FieldSelector.Selector != nil {
|
||||||
storage.requestedFieldSelector = options.FieldSelector
|
storage.requestedFieldSelector = options.FieldSelector.Selector
|
||||||
}
|
}
|
||||||
return result, storage.errors["list"]
|
return result, storage.errors["list"]
|
||||||
}
|
}
|
||||||
@ -472,15 +445,15 @@ func (storage *SimpleRESTStorage) Update(ctx api.Context, obj runtime.Object) (r
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Implement ResourceWatcher.
|
// Implement ResourceWatcher.
|
||||||
func (storage *SimpleRESTStorage) Watch(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (storage *SimpleRESTStorage) Watch(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
storage.checkContext(ctx)
|
storage.checkContext(ctx)
|
||||||
storage.requestedLabelSelector = labels.Everything()
|
storage.requestedLabelSelector = labels.Everything()
|
||||||
if options != nil && options.LabelSelector != nil {
|
if options != nil && options.LabelSelector.Selector != nil {
|
||||||
storage.requestedLabelSelector = options.LabelSelector
|
storage.requestedLabelSelector = options.LabelSelector.Selector
|
||||||
}
|
}
|
||||||
storage.requestedFieldSelector = fields.Everything()
|
storage.requestedFieldSelector = fields.Everything()
|
||||||
if options != nil && options.FieldSelector != nil {
|
if options != nil && options.FieldSelector.Selector != nil {
|
||||||
storage.requestedFieldSelector = options.FieldSelector
|
storage.requestedFieldSelector = options.FieldSelector.Selector
|
||||||
}
|
}
|
||||||
storage.requestedResourceVersion = ""
|
storage.requestedResourceVersion = ""
|
||||||
if options != nil {
|
if options != nil {
|
||||||
@ -931,7 +904,7 @@ func TestList(t *testing.T) {
|
|||||||
legacy: true,
|
legacy: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: "/" + prefix + "/" + testGroupVersion.Group + "/" + testGroupVersion.Version + "/simple?namespace=other&labels=a%3Db&fields=c%3Dd",
|
url: "/" + prefix + "/" + testGroupVersion.Group + "/" + testGroupVersion.Version + "/simple?namespace=other&labelSelector=a%3Db&fieldSelector=c%3Dd",
|
||||||
namespace: "",
|
namespace: "",
|
||||||
selfLink: "/" + prefix + "/" + testGroupVersion.Group + "/" + testGroupVersion.Version + "/simple",
|
selfLink: "/" + prefix + "/" + testGroupVersion.Group + "/" + testGroupVersion.Version + "/simple",
|
||||||
legacy: true,
|
legacy: true,
|
||||||
@ -952,7 +925,7 @@ func TestList(t *testing.T) {
|
|||||||
legacy: true,
|
legacy: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: "/" + prefix + "/" + testGroupVersion.Group + "/" + testGroupVersion.Version + "/namespaces/other/simple?labels=a%3Db&fields=c%3Dd",
|
url: "/" + prefix + "/" + testGroupVersion.Group + "/" + testGroupVersion.Version + "/namespaces/other/simple?labelSelector=a%3Db&fieldSelector=c%3Dd",
|
||||||
namespace: "other",
|
namespace: "other",
|
||||||
selfLink: "/" + prefix + "/" + testGroupVersion.Group + "/" + testGroupVersion.Version + "/namespaces/other/simple",
|
selfLink: "/" + prefix + "/" + testGroupVersion.Group + "/" + testGroupVersion.Version + "/namespaces/other/simple",
|
||||||
legacy: true,
|
legacy: true,
|
||||||
|
@ -240,32 +240,25 @@ func ListResource(r rest.Lister, rw rest.Watcher, scope RequestScope, forceWatch
|
|||||||
ctx := scope.ContextFunc(req)
|
ctx := scope.ContextFunc(req)
|
||||||
ctx = api.WithNamespace(ctx, namespace)
|
ctx = api.WithNamespace(ctx, namespace)
|
||||||
|
|
||||||
versioned, err := scope.Creater.New(scope.ServerAPIVersion, "ListOptions")
|
opts := unversioned.ListOptions{}
|
||||||
if err != nil {
|
if err := scope.Codec.DecodeParametersInto(req.Request.URL.Query(), &opts); err != nil {
|
||||||
errorJSON(err, scope.Codec, w)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if err := scope.Codec.DecodeParametersInto(req.Request.URL.Query(), versioned); err != nil {
|
|
||||||
errorJSON(err, scope.Codec, w)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
opts := api.ListOptions{}
|
|
||||||
if err := scope.Convertor.Convert(versioned, &opts); err != nil {
|
|
||||||
errorJSON(err, scope.Codec, w)
|
errorJSON(err, scope.Codec, w)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// transform fields
|
// transform fields
|
||||||
// TODO: Should this be done as part of convertion?
|
// TODO: DecodeParametersInto should do this.
|
||||||
|
if opts.FieldSelector.Selector != nil {
|
||||||
fn := func(label, value string) (newLabel, newValue string, err error) {
|
fn := func(label, value string) (newLabel, newValue string, err error) {
|
||||||
return scope.Convertor.ConvertFieldLabel(scope.APIVersion, scope.Kind, label, value)
|
return scope.Convertor.ConvertFieldLabel(scope.APIVersion, scope.Kind, label, value)
|
||||||
}
|
}
|
||||||
if opts.FieldSelector, err = opts.FieldSelector.Transform(fn); err != nil {
|
if opts.FieldSelector.Selector, err = opts.FieldSelector.Selector.Transform(fn); err != nil {
|
||||||
// TODO: allow bad request to set field causes based on query parameters
|
// TODO: allow bad request to set field causes based on query parameters
|
||||||
err = errors.NewBadRequest(err.Error())
|
err = errors.NewBadRequest(err.Error())
|
||||||
errorJSON(err, scope.Codec, w)
|
errorJSON(err, scope.Codec, w)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if hasName {
|
if hasName {
|
||||||
// metadata.name is the canonical internal name.
|
// metadata.name is the canonical internal name.
|
||||||
@ -273,7 +266,7 @@ func ListResource(r rest.Lister, rw rest.Watcher, scope RequestScope, forceWatch
|
|||||||
// a request for a single object and optimize the
|
// a request for a single object and optimize the
|
||||||
// storage query accordingly.
|
// storage query accordingly.
|
||||||
nameSelector := fields.OneTermEqualSelector("metadata.name", name)
|
nameSelector := fields.OneTermEqualSelector("metadata.name", name)
|
||||||
if opts.FieldSelector != nil && !opts.FieldSelector.Empty() {
|
if opts.FieldSelector.Selector != nil && !opts.FieldSelector.Selector.Empty() {
|
||||||
// It doesn't make sense to ask for both a name
|
// It doesn't make sense to ask for both a name
|
||||||
// and a field selector, since just the name is
|
// and a field selector, since just the name is
|
||||||
// sufficient to narrow down the request to a
|
// sufficient to narrow down the request to a
|
||||||
@ -285,7 +278,7 @@ func ListResource(r rest.Lister, rw rest.Watcher, scope RequestScope, forceWatch
|
|||||||
)
|
)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
opts.FieldSelector = nameSelector
|
opts.FieldSelector.Selector = nameSelector
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opts.Watch || forceWatch) && rw != nil {
|
if (opts.Watch || forceWatch) && rw != nil {
|
||||||
|
@ -198,14 +198,14 @@ func TestWatchParamParsing(t *testing.T) {
|
|||||||
namespace: api.NamespaceAll,
|
namespace: api.NamespaceAll,
|
||||||
}, {
|
}, {
|
||||||
path: rootPath,
|
path: rootPath,
|
||||||
rawQuery: "resourceVersion=314159&fields=Host%3D&labels=name%3Dfoo",
|
rawQuery: "resourceVersion=314159&fieldSelector=Host%3D&labelSelector=name%3Dfoo",
|
||||||
resourceVersion: "314159",
|
resourceVersion: "314159",
|
||||||
labelSelector: "name=foo",
|
labelSelector: "name=foo",
|
||||||
fieldSelector: "Host=",
|
fieldSelector: "Host=",
|
||||||
namespace: api.NamespaceAll,
|
namespace: api.NamespaceAll,
|
||||||
}, {
|
}, {
|
||||||
path: rootPath,
|
path: rootPath,
|
||||||
rawQuery: "fields=id%3dfoo&resourceVersion=1492",
|
rawQuery: "fieldSelector=id%3dfoo&resourceVersion=1492",
|
||||||
resourceVersion: "1492",
|
resourceVersion: "1492",
|
||||||
labelSelector: "",
|
labelSelector: "",
|
||||||
fieldSelector: "id=foo",
|
fieldSelector: "id=foo",
|
||||||
@ -227,14 +227,14 @@ func TestWatchParamParsing(t *testing.T) {
|
|||||||
namespace: "other",
|
namespace: "other",
|
||||||
}, {
|
}, {
|
||||||
path: namespacedPath,
|
path: namespacedPath,
|
||||||
rawQuery: "resourceVersion=314159&fields=Host%3D&labels=name%3Dfoo",
|
rawQuery: "resourceVersion=314159&fieldSelector=Host%3D&labelSelector=name%3Dfoo",
|
||||||
resourceVersion: "314159",
|
resourceVersion: "314159",
|
||||||
labelSelector: "name=foo",
|
labelSelector: "name=foo",
|
||||||
fieldSelector: "Host=",
|
fieldSelector: "Host=",
|
||||||
namespace: "other",
|
namespace: "other",
|
||||||
}, {
|
}, {
|
||||||
path: namespacedPath,
|
path: namespacedPath,
|
||||||
rawQuery: "fields=id%3dfoo&resourceVersion=1492",
|
rawQuery: "fieldSelector=id%3dfoo&resourceVersion=1492",
|
||||||
resourceVersion: "1492",
|
resourceVersion: "1492",
|
||||||
labelSelector: "",
|
labelSelector: "",
|
||||||
fieldSelector: "id=foo",
|
fieldSelector: "id=foo",
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/apiserver"
|
"k8s.io/kubernetes/pkg/apiserver"
|
||||||
"k8s.io/kubernetes/pkg/probe"
|
"k8s.io/kubernetes/pkg/probe"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
@ -49,7 +50,7 @@ func (rs *REST) NewList() runtime.Object {
|
|||||||
|
|
||||||
// Returns the list of component status. Note that the label and field are both ignored.
|
// Returns the list of component status. Note that the label and field are both ignored.
|
||||||
// Note that this call doesn't support labels or selectors.
|
// Note that this call doesn't support labels or selectors.
|
||||||
func (rs *REST) List(ctx api.Context, options *api.ListOptions) (runtime.Object, error) {
|
func (rs *REST) List(ctx api.Context, options *unversioned.ListOptions) (runtime.Object, error) {
|
||||||
servers := rs.GetServersToValidate()
|
servers := rs.GetServersToValidate()
|
||||||
|
|
||||||
// TODO: This should be parallelized.
|
// TODO: This should be parallelized.
|
||||||
|
@ -21,13 +21,14 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Registry is an interface for things that know how to store ReplicationControllers.
|
// Registry is an interface for things that know how to store ReplicationControllers.
|
||||||
type Registry interface {
|
type Registry interface {
|
||||||
ListControllers(ctx api.Context, options *api.ListOptions) (*api.ReplicationControllerList, error)
|
ListControllers(ctx api.Context, options *unversioned.ListOptions) (*api.ReplicationControllerList, error)
|
||||||
WatchControllers(ctx api.Context, options *api.ListOptions) (watch.Interface, error)
|
WatchControllers(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error)
|
||||||
GetController(ctx api.Context, controllerID string) (*api.ReplicationController, error)
|
GetController(ctx api.Context, controllerID string) (*api.ReplicationController, error)
|
||||||
CreateController(ctx api.Context, controller *api.ReplicationController) (*api.ReplicationController, error)
|
CreateController(ctx api.Context, controller *api.ReplicationController) (*api.ReplicationController, error)
|
||||||
UpdateController(ctx api.Context, controller *api.ReplicationController) (*api.ReplicationController, error)
|
UpdateController(ctx api.Context, controller *api.ReplicationController) (*api.ReplicationController, error)
|
||||||
@ -45,8 +46,8 @@ func NewRegistry(s rest.StandardStorage) Registry {
|
|||||||
return &storage{s}
|
return &storage{s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) ListControllers(ctx api.Context, options *api.ListOptions) (*api.ReplicationControllerList, error) {
|
func (s *storage) ListControllers(ctx api.Context, options *unversioned.ListOptions) (*api.ReplicationControllerList, error) {
|
||||||
if options != nil && options.FieldSelector != nil && !options.FieldSelector.Empty() {
|
if options != nil && options.FieldSelector.Selector != nil && !options.FieldSelector.Selector.Empty() {
|
||||||
return nil, fmt.Errorf("field selector not supported yet")
|
return nil, fmt.Errorf("field selector not supported yet")
|
||||||
}
|
}
|
||||||
obj, err := s.List(ctx, options)
|
obj, err := s.List(ctx, options)
|
||||||
@ -56,7 +57,7 @@ func (s *storage) ListControllers(ctx api.Context, options *api.ListOptions) (*a
|
|||||||
return obj.(*api.ReplicationControllerList), err
|
return obj.(*api.ReplicationControllerList), err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) WatchControllers(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (s *storage) WatchControllers(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
return s.Watch(ctx, options)
|
return s.Watch(ctx, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,12 +21,13 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Registry is an interface for things that know how to store Deployments.
|
// Registry is an interface for things that know how to store Deployments.
|
||||||
type Registry interface {
|
type Registry interface {
|
||||||
ListDeployments(ctx api.Context, options *api.ListOptions) (*extensions.DeploymentList, error)
|
ListDeployments(ctx api.Context, options *unversioned.ListOptions) (*extensions.DeploymentList, error)
|
||||||
GetDeployment(ctx api.Context, deploymentID string) (*extensions.Deployment, error)
|
GetDeployment(ctx api.Context, deploymentID string) (*extensions.Deployment, error)
|
||||||
CreateDeployment(ctx api.Context, deployment *extensions.Deployment) (*extensions.Deployment, error)
|
CreateDeployment(ctx api.Context, deployment *extensions.Deployment) (*extensions.Deployment, error)
|
||||||
UpdateDeployment(ctx api.Context, deployment *extensions.Deployment) (*extensions.Deployment, error)
|
UpdateDeployment(ctx api.Context, deployment *extensions.Deployment) (*extensions.Deployment, error)
|
||||||
@ -43,8 +44,8 @@ func NewRegistry(s rest.StandardStorage) Registry {
|
|||||||
return &storage{s}
|
return &storage{s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) ListDeployments(ctx api.Context, options *api.ListOptions) (*extensions.DeploymentList, error) {
|
func (s *storage) ListDeployments(ctx api.Context, options *unversioned.ListOptions) (*extensions.DeploymentList, error) {
|
||||||
if options != nil && options.FieldSelector != nil && !options.FieldSelector.Empty() {
|
if options != nil && options.FieldSelector.Selector != nil && !options.FieldSelector.Selector.Empty() {
|
||||||
return nil, fmt.Errorf("field selector not supported yet")
|
return nil, fmt.Errorf("field selector not supported yet")
|
||||||
}
|
}
|
||||||
obj, err := s.List(ctx, options)
|
obj, err := s.List(ctx, options)
|
||||||
|
@ -19,14 +19,15 @@ package endpoint
|
|||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Registry is an interface for things that know how to store endpoints.
|
// Registry is an interface for things that know how to store endpoints.
|
||||||
type Registry interface {
|
type Registry interface {
|
||||||
ListEndpoints(ctx api.Context, options *api.ListOptions) (*api.EndpointsList, error)
|
ListEndpoints(ctx api.Context, options *unversioned.ListOptions) (*api.EndpointsList, error)
|
||||||
GetEndpoints(ctx api.Context, name string) (*api.Endpoints, error)
|
GetEndpoints(ctx api.Context, name string) (*api.Endpoints, error)
|
||||||
WatchEndpoints(ctx api.Context, options *api.ListOptions) (watch.Interface, error)
|
WatchEndpoints(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error)
|
||||||
UpdateEndpoints(ctx api.Context, e *api.Endpoints) error
|
UpdateEndpoints(ctx api.Context, e *api.Endpoints) error
|
||||||
DeleteEndpoints(ctx api.Context, name string) error
|
DeleteEndpoints(ctx api.Context, name string) error
|
||||||
}
|
}
|
||||||
@ -42,7 +43,7 @@ func NewRegistry(s rest.StandardStorage) Registry {
|
|||||||
return &storage{s}
|
return &storage{s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) ListEndpoints(ctx api.Context, options *api.ListOptions) (*api.EndpointsList, error) {
|
func (s *storage) ListEndpoints(ctx api.Context, options *unversioned.ListOptions) (*api.EndpointsList, error) {
|
||||||
obj, err := s.List(ctx, options)
|
obj, err := s.List(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -50,7 +51,7 @@ func (s *storage) ListEndpoints(ctx api.Context, options *api.ListOptions) (*api
|
|||||||
return obj.(*api.EndpointsList), nil
|
return obj.(*api.EndpointsList), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) WatchEndpoints(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (s *storage) WatchEndpoints(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
return s.Watch(ctx, options)
|
return s.Watch(ctx, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,20 +161,20 @@ func (e *Etcd) NewList() runtime.Object {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// List returns a list of items matching labels and field
|
// List returns a list of items matching labels and field
|
||||||
func (e *Etcd) List(ctx api.Context, options *api.ListOptions) (runtime.Object, error) {
|
func (e *Etcd) List(ctx api.Context, options *unversioned.ListOptions) (runtime.Object, error) {
|
||||||
label := labels.Everything()
|
label := labels.Everything()
|
||||||
if options != nil && options.LabelSelector != nil {
|
if options != nil && options.LabelSelector.Selector != nil {
|
||||||
label = options.LabelSelector
|
label = options.LabelSelector.Selector
|
||||||
}
|
}
|
||||||
field := fields.Everything()
|
field := fields.Everything()
|
||||||
if options != nil && options.FieldSelector != nil {
|
if options != nil && options.FieldSelector.Selector != nil {
|
||||||
field = options.FieldSelector
|
field = options.FieldSelector.Selector
|
||||||
}
|
}
|
||||||
return e.ListPredicate(ctx, e.PredicateFunc(label, field), options)
|
return e.ListPredicate(ctx, e.PredicateFunc(label, field), options)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListPredicate returns a list of all the items matching m.
|
// ListPredicate returns a list of all the items matching m.
|
||||||
func (e *Etcd) ListPredicate(ctx api.Context, m generic.Matcher, options *api.ListOptions) (runtime.Object, error) {
|
func (e *Etcd) ListPredicate(ctx api.Context, m generic.Matcher, options *unversioned.ListOptions) (runtime.Object, error) {
|
||||||
list := e.NewListFunc()
|
list := e.NewListFunc()
|
||||||
trace := util.NewTrace("List " + reflect.TypeOf(list).String())
|
trace := util.NewTrace("List " + reflect.TypeOf(list).String())
|
||||||
filterFunc := e.filterAndDecorateFunction(m)
|
filterFunc := e.filterAndDecorateFunction(m)
|
||||||
@ -191,7 +191,7 @@ func (e *Etcd) ListPredicate(ctx api.Context, m generic.Matcher, options *api.Li
|
|||||||
|
|
||||||
trace.Step("About to list directory")
|
trace.Step("About to list directory")
|
||||||
if options == nil {
|
if options == nil {
|
||||||
options = &api.ListOptions{ResourceVersion: "0"}
|
options = &unversioned.ListOptions{ResourceVersion: "0"}
|
||||||
}
|
}
|
||||||
version, err := storage.ParseWatchResourceVersion(options.ResourceVersion, e.EndpointName)
|
version, err := storage.ParseWatchResourceVersion(options.ResourceVersion, e.EndpointName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -467,14 +467,14 @@ func (e *Etcd) finalizeDelete(obj runtime.Object, runHooks bool) (runtime.Object
|
|||||||
// WatchPredicate. If possible, you should customize PredicateFunc to produre a
|
// WatchPredicate. If possible, you should customize PredicateFunc to produre a
|
||||||
// matcher that matches by key. generic.SelectionPredicate does this for you
|
// matcher that matches by key. generic.SelectionPredicate does this for you
|
||||||
// automatically.
|
// automatically.
|
||||||
func (e *Etcd) Watch(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (e *Etcd) Watch(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
label := labels.Everything()
|
label := labels.Everything()
|
||||||
if options != nil && options.LabelSelector != nil {
|
if options != nil && options.LabelSelector.Selector != nil {
|
||||||
label = options.LabelSelector
|
label = options.LabelSelector.Selector
|
||||||
}
|
}
|
||||||
field := fields.Everything()
|
field := fields.Everything()
|
||||||
if options != nil && options.FieldSelector != nil {
|
if options != nil && options.FieldSelector.Selector != nil {
|
||||||
field = options.FieldSelector
|
field = options.FieldSelector.Selector
|
||||||
}
|
}
|
||||||
resourceVersion := ""
|
resourceVersion := ""
|
||||||
if options != nil {
|
if options != nil {
|
||||||
|
@ -19,13 +19,14 @@ package namespace
|
|||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Registry is an interface implemented by things that know how to store Namespace objects.
|
// Registry is an interface implemented by things that know how to store Namespace objects.
|
||||||
type Registry interface {
|
type Registry interface {
|
||||||
ListNamespaces(ctx api.Context, options *api.ListOptions) (*api.NamespaceList, error)
|
ListNamespaces(ctx api.Context, options *unversioned.ListOptions) (*api.NamespaceList, error)
|
||||||
WatchNamespaces(ctx api.Context, options *api.ListOptions) (watch.Interface, error)
|
WatchNamespaces(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error)
|
||||||
GetNamespace(ctx api.Context, namespaceID string) (*api.Namespace, error)
|
GetNamespace(ctx api.Context, namespaceID string) (*api.Namespace, error)
|
||||||
CreateNamespace(ctx api.Context, namespace *api.Namespace) error
|
CreateNamespace(ctx api.Context, namespace *api.Namespace) error
|
||||||
UpdateNamespace(ctx api.Context, namespace *api.Namespace) error
|
UpdateNamespace(ctx api.Context, namespace *api.Namespace) error
|
||||||
@ -43,7 +44,7 @@ func NewRegistry(s rest.StandardStorage) Registry {
|
|||||||
return &storage{s}
|
return &storage{s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) ListNamespaces(ctx api.Context, options *api.ListOptions) (*api.NamespaceList, error) {
|
func (s *storage) ListNamespaces(ctx api.Context, options *unversioned.ListOptions) (*api.NamespaceList, error) {
|
||||||
obj, err := s.List(ctx, options)
|
obj, err := s.List(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -51,7 +52,7 @@ func (s *storage) ListNamespaces(ctx api.Context, options *api.ListOptions) (*ap
|
|||||||
return obj.(*api.NamespaceList), nil
|
return obj.(*api.NamespaceList), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) WatchNamespaces(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (s *storage) WatchNamespaces(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
return s.Watch(ctx, options)
|
return s.Watch(ctx, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,17 +19,18 @@ package node
|
|||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Registry is an interface for things that know how to store node.
|
// Registry is an interface for things that know how to store node.
|
||||||
type Registry interface {
|
type Registry interface {
|
||||||
ListNodes(ctx api.Context, options *api.ListOptions) (*api.NodeList, error)
|
ListNodes(ctx api.Context, options *unversioned.ListOptions) (*api.NodeList, error)
|
||||||
CreateNode(ctx api.Context, node *api.Node) error
|
CreateNode(ctx api.Context, node *api.Node) error
|
||||||
UpdateNode(ctx api.Context, node *api.Node) error
|
UpdateNode(ctx api.Context, node *api.Node) error
|
||||||
GetNode(ctx api.Context, nodeID string) (*api.Node, error)
|
GetNode(ctx api.Context, nodeID string) (*api.Node, error)
|
||||||
DeleteNode(ctx api.Context, nodeID string) error
|
DeleteNode(ctx api.Context, nodeID string) error
|
||||||
WatchNodes(ctx api.Context, options *api.ListOptions) (watch.Interface, error)
|
WatchNodes(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// storage puts strong typing around storage calls
|
// storage puts strong typing around storage calls
|
||||||
@ -43,7 +44,7 @@ func NewRegistry(s rest.StandardStorage) Registry {
|
|||||||
return &storage{s}
|
return &storage{s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) ListNodes(ctx api.Context, options *api.ListOptions) (*api.NodeList, error) {
|
func (s *storage) ListNodes(ctx api.Context, options *unversioned.ListOptions) (*api.NodeList, error) {
|
||||||
obj, err := s.List(ctx, options)
|
obj, err := s.List(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -62,7 +63,7 @@ func (s *storage) UpdateNode(ctx api.Context, node *api.Node) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) WatchNodes(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (s *storage) WatchNodes(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
return s.Watch(ctx, options)
|
return s.Watch(ctx, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -34,7 +35,7 @@ type EndpointRegistry struct {
|
|||||||
lock sync.Mutex
|
lock sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *EndpointRegistry) ListEndpoints(ctx api.Context, options *api.ListOptions) (*api.EndpointsList, error) {
|
func (e *EndpointRegistry) ListEndpoints(ctx api.Context, options *unversioned.ListOptions) (*api.EndpointsList, error) {
|
||||||
// TODO: support namespaces in this mock
|
// TODO: support namespaces in this mock
|
||||||
e.lock.Lock()
|
e.lock.Lock()
|
||||||
defer e.lock.Unlock()
|
defer e.lock.Unlock()
|
||||||
@ -59,7 +60,7 @@ func (e *EndpointRegistry) GetEndpoints(ctx api.Context, name string) (*api.Endp
|
|||||||
return nil, errors.NewNotFound("Endpoints", name)
|
return nil, errors.NewNotFound("Endpoints", name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *EndpointRegistry) WatchEndpoints(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (e *EndpointRegistry) WatchEndpoints(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
return nil, fmt.Errorf("unimplemented!")
|
return nil, fmt.Errorf("unimplemented!")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -57,7 +58,7 @@ func (r *NodeRegistry) SetError(err error) {
|
|||||||
r.Err = err
|
r.Err = err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *NodeRegistry) ListNodes(ctx api.Context, options *api.ListOptions) (*api.NodeList, error) {
|
func (r *NodeRegistry) ListNodes(ctx api.Context, options *unversioned.ListOptions) (*api.NodeList, error) {
|
||||||
r.Lock()
|
r.Lock()
|
||||||
defer r.Unlock()
|
defer r.Unlock()
|
||||||
return &r.Nodes, r.Err
|
return &r.Nodes, r.Err
|
||||||
@ -110,6 +111,6 @@ func (r *NodeRegistry) DeleteNode(ctx api.Context, nodeID string) error {
|
|||||||
return r.Err
|
return r.Err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *NodeRegistry) WatchNodes(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (r *NodeRegistry) WatchNodes(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
return nil, r.Err
|
return nil, r.Err
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -45,7 +46,7 @@ func (r *ServiceRegistry) SetError(err error) {
|
|||||||
r.Err = err
|
r.Err = err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *ServiceRegistry) ListServices(ctx api.Context, options *api.ListOptions) (*api.ServiceList, error) {
|
func (r *ServiceRegistry) ListServices(ctx api.Context, options *unversioned.ListOptions) (*api.ServiceList, error) {
|
||||||
r.mu.Lock()
|
r.mu.Lock()
|
||||||
defer r.mu.Unlock()
|
defer r.mu.Unlock()
|
||||||
|
|
||||||
@ -106,7 +107,7 @@ func (r *ServiceRegistry) UpdateService(ctx api.Context, svc *api.Service) (*api
|
|||||||
return svc, r.Err
|
return svc, r.Err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *ServiceRegistry) WatchServices(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (r *ServiceRegistry) WatchServices(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
r.mu.Lock()
|
r.mu.Lock()
|
||||||
defer r.mu.Unlock()
|
defer r.mu.Unlock()
|
||||||
|
|
||||||
|
@ -19,13 +19,14 @@ package secret
|
|||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Registry is an interface implemented by things that know how to store Secret objects.
|
// Registry is an interface implemented by things that know how to store Secret objects.
|
||||||
type Registry interface {
|
type Registry interface {
|
||||||
ListSecrets(ctx api.Context, options *api.ListOptions) (*api.SecretList, error)
|
ListSecrets(ctx api.Context, options *unversioned.ListOptions) (*api.SecretList, error)
|
||||||
WatchSecrets(ctx api.Context, options *api.ListOptions) (watch.Interface, error)
|
WatchSecrets(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error)
|
||||||
GetSecret(ctx api.Context, name string) (*api.Secret, error)
|
GetSecret(ctx api.Context, name string) (*api.Secret, error)
|
||||||
CreateSecret(ctx api.Context, Secret *api.Secret) (*api.Secret, error)
|
CreateSecret(ctx api.Context, Secret *api.Secret) (*api.Secret, error)
|
||||||
UpdateSecret(ctx api.Context, Secret *api.Secret) (*api.Secret, error)
|
UpdateSecret(ctx api.Context, Secret *api.Secret) (*api.Secret, error)
|
||||||
@ -43,7 +44,7 @@ func NewRegistry(s rest.StandardStorage) Registry {
|
|||||||
return &storage{s}
|
return &storage{s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) ListSecrets(ctx api.Context, options *api.ListOptions) (*api.SecretList, error) {
|
func (s *storage) ListSecrets(ctx api.Context, options *unversioned.ListOptions) (*api.SecretList, error) {
|
||||||
obj, err := s.List(ctx, options)
|
obj, err := s.List(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -51,7 +52,7 @@ func (s *storage) ListSecrets(ctx api.Context, options *api.ListOptions) (*api.S
|
|||||||
return obj.(*api.SecretList), nil
|
return obj.(*api.SecretList), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) WatchSecrets(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (s *storage) WatchSecrets(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
return s.Watch(ctx, options)
|
return s.Watch(ctx, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/registry/service"
|
"k8s.io/kubernetes/pkg/registry/service"
|
||||||
"k8s.io/kubernetes/pkg/registry/service/ipallocator"
|
"k8s.io/kubernetes/pkg/registry/service/ipallocator"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
@ -92,7 +93,7 @@ func (c *Repair) RunOnce() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ctx := api.WithNamespace(api.NewDefaultContext(), api.NamespaceAll)
|
ctx := api.WithNamespace(api.NewDefaultContext(), api.NamespaceAll)
|
||||||
options := &api.ListOptions{ResourceVersion: latest.ObjectMeta.ResourceVersion}
|
options := &unversioned.ListOptions{ResourceVersion: latest.ObjectMeta.ResourceVersion}
|
||||||
list, err := c.registry.ListServices(ctx, options)
|
list, err := c.registry.ListServices(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to refresh the service IP block: %v", err)
|
return fmt.Errorf("unable to refresh the service IP block: %v", err)
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/registry/service"
|
"k8s.io/kubernetes/pkg/registry/service"
|
||||||
"k8s.io/kubernetes/pkg/registry/service/portallocator"
|
"k8s.io/kubernetes/pkg/registry/service/portallocator"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
@ -79,7 +80,7 @@ func (c *Repair) RunOnce() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ctx := api.WithNamespace(api.NewDefaultContext(), api.NamespaceAll)
|
ctx := api.WithNamespace(api.NewDefaultContext(), api.NamespaceAll)
|
||||||
options := &api.ListOptions{ResourceVersion: latest.ObjectMeta.ResourceVersion}
|
options := &unversioned.ListOptions{ResourceVersion: latest.ObjectMeta.ResourceVersion}
|
||||||
list, err := c.registry.ListServices(ctx, options)
|
list, err := c.registry.ListServices(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to refresh the port block: %v", err)
|
return fmt.Errorf("unable to refresh the port block: %v", err)
|
||||||
|
@ -19,17 +19,18 @@ package service
|
|||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Registry is an interface for things that know how to store services.
|
// Registry is an interface for things that know how to store services.
|
||||||
type Registry interface {
|
type Registry interface {
|
||||||
ListServices(ctx api.Context, options *api.ListOptions) (*api.ServiceList, error)
|
ListServices(ctx api.Context, options *unversioned.ListOptions) (*api.ServiceList, error)
|
||||||
CreateService(ctx api.Context, svc *api.Service) (*api.Service, error)
|
CreateService(ctx api.Context, svc *api.Service) (*api.Service, error)
|
||||||
GetService(ctx api.Context, name string) (*api.Service, error)
|
GetService(ctx api.Context, name string) (*api.Service, error)
|
||||||
DeleteService(ctx api.Context, name string) error
|
DeleteService(ctx api.Context, name string) error
|
||||||
UpdateService(ctx api.Context, svc *api.Service) (*api.Service, error)
|
UpdateService(ctx api.Context, svc *api.Service) (*api.Service, error)
|
||||||
WatchServices(ctx api.Context, options *api.ListOptions) (watch.Interface, error)
|
WatchServices(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// storage puts strong typing around storage calls
|
// storage puts strong typing around storage calls
|
||||||
@ -43,7 +44,7 @@ func NewRegistry(s rest.StandardStorage) Registry {
|
|||||||
return &storage{s}
|
return &storage{s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) ListServices(ctx api.Context, options *api.ListOptions) (*api.ServiceList, error) {
|
func (s *storage) ListServices(ctx api.Context, options *unversioned.ListOptions) (*api.ServiceList, error) {
|
||||||
obj, err := s.List(ctx, options)
|
obj, err := s.List(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -80,7 +81,7 @@ func (s *storage) UpdateService(ctx api.Context, svc *api.Service) (*api.Service
|
|||||||
return obj.(*api.Service), nil
|
return obj.(*api.Service), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) WatchServices(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (s *storage) WatchServices(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
return s.Watch(ctx, options)
|
return s.Watch(ctx, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,13 +172,13 @@ func (rs *REST) Get(ctx api.Context, id string) (runtime.Object, error) {
|
|||||||
return rs.registry.GetService(ctx, id)
|
return rs.registry.GetService(ctx, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rs *REST) List(ctx api.Context, options *api.ListOptions) (runtime.Object, error) {
|
func (rs *REST) List(ctx api.Context, options *unversioned.ListOptions) (runtime.Object, error) {
|
||||||
return rs.registry.ListServices(ctx, options)
|
return rs.registry.ListServices(ctx, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Watch returns Services events via a watch.Interface.
|
// Watch returns Services events via a watch.Interface.
|
||||||
// It implements rest.Watcher.
|
// It implements rest.Watcher.
|
||||||
func (rs *REST) Watch(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (rs *REST) Watch(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
return rs.registry.WatchServices(ctx, options)
|
return rs.registry.WatchServices(ctx, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,13 +19,14 @@ package serviceaccount
|
|||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Registry is an interface implemented by things that know how to store ServiceAccount objects.
|
// Registry is an interface implemented by things that know how to store ServiceAccount objects.
|
||||||
type Registry interface {
|
type Registry interface {
|
||||||
ListServiceAccounts(ctx api.Context, options *api.ListOptions) (*api.ServiceAccountList, error)
|
ListServiceAccounts(ctx api.Context, options *unversioned.ListOptions) (*api.ServiceAccountList, error)
|
||||||
WatchServiceAccounts(ctx api.Context, options *api.ListOptions) (watch.Interface, error)
|
WatchServiceAccounts(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error)
|
||||||
GetServiceAccount(ctx api.Context, name string) (*api.ServiceAccount, error)
|
GetServiceAccount(ctx api.Context, name string) (*api.ServiceAccount, error)
|
||||||
CreateServiceAccount(ctx api.Context, ServiceAccount *api.ServiceAccount) error
|
CreateServiceAccount(ctx api.Context, ServiceAccount *api.ServiceAccount) error
|
||||||
UpdateServiceAccount(ctx api.Context, ServiceAccount *api.ServiceAccount) error
|
UpdateServiceAccount(ctx api.Context, ServiceAccount *api.ServiceAccount) error
|
||||||
@ -43,7 +44,7 @@ func NewRegistry(s rest.StandardStorage) Registry {
|
|||||||
return &storage{s}
|
return &storage{s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) ListServiceAccounts(ctx api.Context, options *api.ListOptions) (*api.ServiceAccountList, error) {
|
func (s *storage) ListServiceAccounts(ctx api.Context, options *unversioned.ListOptions) (*api.ServiceAccountList, error) {
|
||||||
obj, err := s.List(ctx, options)
|
obj, err := s.List(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -51,7 +52,7 @@ func (s *storage) ListServiceAccounts(ctx api.Context, options *api.ListOptions)
|
|||||||
return obj.(*api.ServiceAccountList), nil
|
return obj.(*api.ServiceAccountList), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) WatchServiceAccounts(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (s *storage) WatchServiceAccounts(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
return s.Watch(ctx, options)
|
return s.Watch(ctx, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,14 +19,15 @@ package thirdpartyresourcedata
|
|||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Registry is an interface implemented by things that know how to store ThirdPartyResourceData objects.
|
// Registry is an interface implemented by things that know how to store ThirdPartyResourceData objects.
|
||||||
type Registry interface {
|
type Registry interface {
|
||||||
ListThirdPartyResourceData(ctx api.Context, options *api.ListOptions) (*extensions.ThirdPartyResourceDataList, error)
|
ListThirdPartyResourceData(ctx api.Context, options *unversioned.ListOptions) (*extensions.ThirdPartyResourceDataList, error)
|
||||||
WatchThirdPartyResourceData(ctx api.Context, options *api.ListOptions) (watch.Interface, error)
|
WatchThirdPartyResourceData(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error)
|
||||||
GetThirdPartyResourceData(ctx api.Context, name string) (*extensions.ThirdPartyResourceData, error)
|
GetThirdPartyResourceData(ctx api.Context, name string) (*extensions.ThirdPartyResourceData, error)
|
||||||
CreateThirdPartyResourceData(ctx api.Context, resource *extensions.ThirdPartyResourceData) (*extensions.ThirdPartyResourceData, error)
|
CreateThirdPartyResourceData(ctx api.Context, resource *extensions.ThirdPartyResourceData) (*extensions.ThirdPartyResourceData, error)
|
||||||
UpdateThirdPartyResourceData(ctx api.Context, resource *extensions.ThirdPartyResourceData) (*extensions.ThirdPartyResourceData, error)
|
UpdateThirdPartyResourceData(ctx api.Context, resource *extensions.ThirdPartyResourceData) (*extensions.ThirdPartyResourceData, error)
|
||||||
@ -44,7 +45,7 @@ func NewRegistry(s rest.StandardStorage) Registry {
|
|||||||
return &storage{s}
|
return &storage{s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) ListThirdPartyResourceData(ctx api.Context, options *api.ListOptions) (*extensions.ThirdPartyResourceDataList, error) {
|
func (s *storage) ListThirdPartyResourceData(ctx api.Context, options *unversioned.ListOptions) (*extensions.ThirdPartyResourceDataList, error) {
|
||||||
obj, err := s.List(ctx, options)
|
obj, err := s.List(ctx, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -52,7 +53,7 @@ func (s *storage) ListThirdPartyResourceData(ctx api.Context, options *api.ListO
|
|||||||
return obj.(*extensions.ThirdPartyResourceDataList), nil
|
return obj.(*extensions.ThirdPartyResourceDataList), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) WatchThirdPartyResourceData(ctx api.Context, options *api.ListOptions) (watch.Interface, error) {
|
func (s *storage) WatchThirdPartyResourceData(ctx api.Context, options *unversioned.ListOptions) (watch.Interface, error) {
|
||||||
return s.Watch(ctx, options)
|
return s.Watch(ctx, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user