Merge pull request #17369 from wojtek-t/use_unversioned_list_options

Auto commit by PR queue bot
This commit is contained in:
k8s-merge-robot 2015-11-24 07:32:37 -08:00
commit f3753c02ed
24 changed files with 178 additions and 135 deletions

View File

@ -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()

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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,

View File

@ -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 {

View File

@ -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",

View File

@ -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.

View File

@ -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)
} }

View File

@ -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)

View File

@ -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)
} }

View File

@ -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 {

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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!")
} }

View File

@ -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
} }

View File

@ -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()

View File

@ -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)
} }

View File

@ -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)

View File

@ -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)

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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)
} }

View File

@ -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)
} }