mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 09:49:50 +00:00
Pass versioner to cacher.
This commit is contained in:
parent
0d9f2dc5fd
commit
a5a8717539
@ -19,6 +19,7 @@ package serviceaccount
|
|||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/secret"
|
"k8s.io/kubernetes/pkg/registry/secret"
|
||||||
secretetcd "k8s.io/kubernetes/pkg/registry/secret/etcd"
|
secretetcd "k8s.io/kubernetes/pkg/registry/secret/etcd"
|
||||||
"k8s.io/kubernetes/pkg/registry/serviceaccount"
|
"k8s.io/kubernetes/pkg/registry/serviceaccount"
|
||||||
@ -75,7 +76,7 @@ func (r *registryGetter) GetSecret(namespace, name string) (*api.Secret, error)
|
|||||||
// uses the specified storage to retrieve service accounts and secrets.
|
// uses the specified storage to retrieve service accounts and secrets.
|
||||||
func NewGetterFromStorageInterface(s storage.Interface) ServiceAccountTokenGetter {
|
func NewGetterFromStorageInterface(s storage.Interface) ServiceAccountTokenGetter {
|
||||||
return NewGetterFromRegistries(
|
return NewGetterFromRegistries(
|
||||||
serviceaccount.NewRegistry(serviceaccountetcd.NewREST(s, storage.NoDecoration)),
|
serviceaccount.NewRegistry(serviceaccountetcd.NewREST(s, generic.UndecoratedStorage)),
|
||||||
secret.NewRegistry(secretetcd.NewREST(s, storage.NoDecoration)),
|
secret.NewRegistry(secretetcd.NewREST(s, generic.UndecoratedStorage)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -51,6 +51,8 @@ import (
|
|||||||
endpointsetcd "k8s.io/kubernetes/pkg/registry/endpoint/etcd"
|
endpointsetcd "k8s.io/kubernetes/pkg/registry/endpoint/etcd"
|
||||||
eventetcd "k8s.io/kubernetes/pkg/registry/event/etcd"
|
eventetcd "k8s.io/kubernetes/pkg/registry/event/etcd"
|
||||||
expcontrolleretcd "k8s.io/kubernetes/pkg/registry/experimental/controller/etcd"
|
expcontrolleretcd "k8s.io/kubernetes/pkg/registry/experimental/controller/etcd"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
|
genericetcd "k8s.io/kubernetes/pkg/registry/generic/etcd"
|
||||||
ingressetcd "k8s.io/kubernetes/pkg/registry/ingress/etcd"
|
ingressetcd "k8s.io/kubernetes/pkg/registry/ingress/etcd"
|
||||||
jobetcd "k8s.io/kubernetes/pkg/registry/job/etcd"
|
jobetcd "k8s.io/kubernetes/pkg/registry/job/etcd"
|
||||||
limitrangeetcd "k8s.io/kubernetes/pkg/registry/limitrange/etcd"
|
limitrangeetcd "k8s.io/kubernetes/pkg/registry/limitrange/etcd"
|
||||||
@ -268,11 +270,11 @@ type Config struct {
|
|||||||
KubernetesServiceNodePort int
|
KubernetesServiceNodePort int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Config) storageFactory() storage.StorageFactory {
|
func (c *Config) storageDecorator() generic.StorageDecorator {
|
||||||
if c.EnableWatchCache {
|
if c.EnableWatchCache {
|
||||||
return storage.NewCacher
|
return genericetcd.StorageWithCacher
|
||||||
}
|
}
|
||||||
return storage.NoDecoration
|
return generic.UndecoratedStorage
|
||||||
}
|
}
|
||||||
|
|
||||||
type InstallSSHKey func(user string, data []byte) error
|
type InstallSSHKey func(user string, data []byte) error
|
||||||
@ -543,31 +545,31 @@ func (m *Master) init(c *Config) {
|
|||||||
|
|
||||||
healthzChecks := []healthz.HealthzChecker{}
|
healthzChecks := []healthz.HealthzChecker{}
|
||||||
|
|
||||||
storageFactory := c.storageFactory()
|
storageDecorator := c.storageDecorator()
|
||||||
dbClient := func(resource string) storage.Interface { return c.StorageDestinations.get("", resource) }
|
dbClient := func(resource string) storage.Interface { return c.StorageDestinations.get("", resource) }
|
||||||
podStorage := podetcd.NewStorage(dbClient("pods"), storageFactory, c.KubeletClient, m.proxyTransport)
|
podStorage := podetcd.NewStorage(dbClient("pods"), storageDecorator, c.KubeletClient, m.proxyTransport)
|
||||||
|
|
||||||
podTemplateStorage := podtemplateetcd.NewREST(dbClient("podTemplates"), storageFactory)
|
podTemplateStorage := podtemplateetcd.NewREST(dbClient("podTemplates"), storageDecorator)
|
||||||
|
|
||||||
eventStorage := eventetcd.NewREST(dbClient("events"), storageFactory, uint64(c.EventTTL.Seconds()))
|
eventStorage := eventetcd.NewREST(dbClient("events"), storageDecorator, uint64(c.EventTTL.Seconds()))
|
||||||
limitRangeStorage := limitrangeetcd.NewREST(dbClient("limitRanges"), storageFactory)
|
limitRangeStorage := limitrangeetcd.NewREST(dbClient("limitRanges"), storageDecorator)
|
||||||
|
|
||||||
resourceQuotaStorage, resourceQuotaStatusStorage := resourcequotaetcd.NewREST(dbClient("resourceQuotas"), storageFactory)
|
resourceQuotaStorage, resourceQuotaStatusStorage := resourcequotaetcd.NewREST(dbClient("resourceQuotas"), storageDecorator)
|
||||||
secretStorage := secretetcd.NewREST(dbClient("secrets"), storageFactory)
|
secretStorage := secretetcd.NewREST(dbClient("secrets"), storageDecorator)
|
||||||
serviceAccountStorage := serviceaccountetcd.NewREST(dbClient("serviceAccounts"), storageFactory)
|
serviceAccountStorage := serviceaccountetcd.NewREST(dbClient("serviceAccounts"), storageDecorator)
|
||||||
persistentVolumeStorage, persistentVolumeStatusStorage := pvetcd.NewREST(dbClient("persistentVolumes"), storageFactory)
|
persistentVolumeStorage, persistentVolumeStatusStorage := pvetcd.NewREST(dbClient("persistentVolumes"), storageDecorator)
|
||||||
persistentVolumeClaimStorage, persistentVolumeClaimStatusStorage := pvcetcd.NewREST(dbClient("persistentVolumeClaims"), storageFactory)
|
persistentVolumeClaimStorage, persistentVolumeClaimStatusStorage := pvcetcd.NewREST(dbClient("persistentVolumeClaims"), storageDecorator)
|
||||||
|
|
||||||
namespaceStorage, namespaceStatusStorage, namespaceFinalizeStorage := namespaceetcd.NewREST(dbClient("namespaces"), storageFactory)
|
namespaceStorage, namespaceStatusStorage, namespaceFinalizeStorage := namespaceetcd.NewREST(dbClient("namespaces"), storageDecorator)
|
||||||
m.namespaceRegistry = namespace.NewRegistry(namespaceStorage)
|
m.namespaceRegistry = namespace.NewRegistry(namespaceStorage)
|
||||||
|
|
||||||
endpointsStorage := endpointsetcd.NewREST(dbClient("endpoints"), storageFactory)
|
endpointsStorage := endpointsetcd.NewREST(dbClient("endpoints"), storageDecorator)
|
||||||
m.endpointRegistry = endpoint.NewRegistry(endpointsStorage)
|
m.endpointRegistry = endpoint.NewRegistry(endpointsStorage)
|
||||||
|
|
||||||
nodeStorage, nodeStatusStorage := nodeetcd.NewREST(dbClient("nodes"), storageFactory, c.KubeletClient, m.proxyTransport)
|
nodeStorage, nodeStatusStorage := nodeetcd.NewREST(dbClient("nodes"), storageDecorator, c.KubeletClient, m.proxyTransport)
|
||||||
m.nodeRegistry = node.NewRegistry(nodeStorage)
|
m.nodeRegistry = node.NewRegistry(nodeStorage)
|
||||||
|
|
||||||
serviceStorage := serviceetcd.NewREST(dbClient("services"), storageFactory)
|
serviceStorage := serviceetcd.NewREST(dbClient("services"), storageDecorator)
|
||||||
m.serviceRegistry = service.NewRegistry(serviceStorage)
|
m.serviceRegistry = service.NewRegistry(serviceStorage)
|
||||||
|
|
||||||
var serviceClusterIPRegistry service.RangeRegistry
|
var serviceClusterIPRegistry service.RangeRegistry
|
||||||
@ -588,7 +590,7 @@ func (m *Master) init(c *Config) {
|
|||||||
})
|
})
|
||||||
m.serviceNodePortAllocator = serviceNodePortRegistry
|
m.serviceNodePortAllocator = serviceNodePortRegistry
|
||||||
|
|
||||||
controllerStorage, controllerStatusStorage := controlleretcd.NewREST(dbClient("replicationControllers"), storageFactory)
|
controllerStorage, controllerStatusStorage := controlleretcd.NewREST(dbClient("replicationControllers"), storageDecorator)
|
||||||
|
|
||||||
// TODO: Factor out the core API registration
|
// TODO: Factor out the core API registration
|
||||||
m.storage = map[string]rest.Storage{
|
m.storage = map[string]rest.Storage{
|
||||||
@ -1008,7 +1010,7 @@ func (m *Master) InstallThirdPartyResource(rsrc *expapi.ThirdPartyResource) erro
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *Master) thirdpartyapi(group, kind, version string) *apiserver.APIGroupVersion {
|
func (m *Master) thirdpartyapi(group, kind, version string) *apiserver.APIGroupVersion {
|
||||||
resourceStorage := thirdpartyresourcedataetcd.NewREST(m.thirdPartyStorage, storage.NoDecoration, group, kind)
|
resourceStorage := thirdpartyresourcedataetcd.NewREST(m.thirdPartyStorage, generic.UndecoratedStorage, group, kind)
|
||||||
|
|
||||||
apiRoot := makeThirdPartyPath("")
|
apiRoot := makeThirdPartyPath("")
|
||||||
|
|
||||||
@ -1050,22 +1052,22 @@ func (m *Master) experimental(c *Config) *apiserver.APIGroupVersion {
|
|||||||
}
|
}
|
||||||
return enabled
|
return enabled
|
||||||
}
|
}
|
||||||
storageFactory := c.storageFactory()
|
storageDecorator := c.storageDecorator()
|
||||||
dbClient := func(resource string) storage.Interface {
|
dbClient := func(resource string) storage.Interface {
|
||||||
return c.StorageDestinations.get("extensions", resource)
|
return c.StorageDestinations.get("extensions", resource)
|
||||||
}
|
}
|
||||||
|
|
||||||
storage := map[string]rest.Storage{}
|
storage := map[string]rest.Storage{}
|
||||||
if isEnabled("horizontalpodautoscalers") {
|
if isEnabled("horizontalpodautoscalers") {
|
||||||
autoscalerStorage, autoscalerStatusStorage := horizontalpodautoscaleretcd.NewREST(dbClient("horizontalpodautoscalers"), storageFactory)
|
autoscalerStorage, autoscalerStatusStorage := horizontalpodautoscaleretcd.NewREST(dbClient("horizontalpodautoscalers"), storageDecorator)
|
||||||
storage["horizontalpodautoscalers"] = autoscalerStorage
|
storage["horizontalpodautoscalers"] = autoscalerStorage
|
||||||
storage["horizontalpodautoscalers/status"] = autoscalerStatusStorage
|
storage["horizontalpodautoscalers/status"] = autoscalerStatusStorage
|
||||||
controllerStorage := expcontrolleretcd.NewStorage(c.StorageDestinations.get("", "replicationControllers"), storageFactory)
|
controllerStorage := expcontrolleretcd.NewStorage(c.StorageDestinations.get("", "replicationControllers"), storageDecorator)
|
||||||
storage["replicationcontrollers"] = controllerStorage.ReplicationController
|
storage["replicationcontrollers"] = controllerStorage.ReplicationController
|
||||||
storage["replicationcontrollers/scale"] = controllerStorage.Scale
|
storage["replicationcontrollers/scale"] = controllerStorage.Scale
|
||||||
}
|
}
|
||||||
if isEnabled("thirdpartyresources") {
|
if isEnabled("thirdpartyresources") {
|
||||||
thirdPartyResourceStorage := thirdpartyresourceetcd.NewREST(dbClient("thirdpartyresources"), storageFactory)
|
thirdPartyResourceStorage := thirdpartyresourceetcd.NewREST(dbClient("thirdpartyresources"), storageDecorator)
|
||||||
thirdPartyControl := ThirdPartyController{
|
thirdPartyControl := ThirdPartyController{
|
||||||
master: m,
|
master: m,
|
||||||
thirdPartyResourceRegistry: thirdPartyResourceStorage,
|
thirdPartyResourceRegistry: thirdPartyResourceStorage,
|
||||||
@ -1082,23 +1084,23 @@ func (m *Master) experimental(c *Config) *apiserver.APIGroupVersion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if isEnabled("daemonsets") {
|
if isEnabled("daemonsets") {
|
||||||
daemonSetStorage, daemonSetStatusStorage := daemonetcd.NewREST(dbClient("daemonsets"), storageFactory)
|
daemonSetStorage, daemonSetStatusStorage := daemonetcd.NewREST(dbClient("daemonsets"), storageDecorator)
|
||||||
storage["daemonsets"] = daemonSetStorage
|
storage["daemonsets"] = daemonSetStorage
|
||||||
storage["daemonsets/status"] = daemonSetStatusStorage
|
storage["daemonsets/status"] = daemonSetStatusStorage
|
||||||
}
|
}
|
||||||
if isEnabled("deployments") {
|
if isEnabled("deployments") {
|
||||||
deploymentStorage := deploymentetcd.NewStorage(dbClient("deployments"), storageFactory)
|
deploymentStorage := deploymentetcd.NewStorage(dbClient("deployments"), storageDecorator)
|
||||||
storage["deployments"] = deploymentStorage.Deployment
|
storage["deployments"] = deploymentStorage.Deployment
|
||||||
storage["deployments/status"] = deploymentStorage.Status
|
storage["deployments/status"] = deploymentStorage.Status
|
||||||
storage["deployments/scale"] = deploymentStorage.Scale
|
storage["deployments/scale"] = deploymentStorage.Scale
|
||||||
}
|
}
|
||||||
if isEnabled("jobs") {
|
if isEnabled("jobs") {
|
||||||
jobStorage, jobStatusStorage := jobetcd.NewREST(dbClient("jobs"), storageFactory)
|
jobStorage, jobStatusStorage := jobetcd.NewREST(dbClient("jobs"), storageDecorator)
|
||||||
storage["jobs"] = jobStorage
|
storage["jobs"] = jobStorage
|
||||||
storage["jobs/status"] = jobStatusStorage
|
storage["jobs/status"] = jobStatusStorage
|
||||||
}
|
}
|
||||||
if isEnabled("ingresses") {
|
if isEnabled("ingresses") {
|
||||||
ingressStorage, ingressStatusStorage := ingressetcd.NewREST(dbClient("ingresses"), storageFactory)
|
ingressStorage, ingressStatusStorage := ingressetcd.NewREST(dbClient("ingresses"), storageDecorator)
|
||||||
storage["ingresses"] = ingressStorage
|
storage["ingresses"] = ingressStorage
|
||||||
storage["ingresses/status"] = ingressStatusStorage
|
storage["ingresses/status"] = ingressStatusStorage
|
||||||
}
|
}
|
||||||
|
@ -32,12 +32,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against replication controllers.
|
// NewREST returns a RESTStorage object that will work against replication controllers.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) (*REST, *StatusREST) {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*REST, *StatusREST) {
|
||||||
prefix := "/controllers"
|
prefix := "/controllers"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.ReplicationControllerList{} }
|
newListFunc := func() runtime.Object { return &api.ReplicationControllerList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &api.ReplicationController{}, prefix, true, newListFunc)
|
s, 100, &api.ReplicationController{}, prefix, true, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.ReplicationController{} },
|
NewFunc: func() runtime.Object { return &api.ReplicationController{} },
|
||||||
|
@ -22,15 +22,15 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
controllerStorage, statusStorage := NewREST(etcdStorage, storage.NoDecoration)
|
controllerStorage, statusStorage := NewREST(etcdStorage, generic.UndecoratedStorage)
|
||||||
return controllerStorage, statusStorage, fakeClient
|
return controllerStorage, statusStorage, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,12 +34,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against DaemonSets.
|
// NewREST returns a RESTStorage object that will work against DaemonSets.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) (*REST, *StatusREST) {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*REST, *StatusREST) {
|
||||||
prefix := "/daemonsets"
|
prefix := "/daemonsets"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &extensions.DaemonSetList{} }
|
newListFunc := func() runtime.Object { return &extensions.DaemonSetList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &extensions.DaemonSet{}, prefix, false, newListFunc)
|
s, 100, &extensions.DaemonSet{}, prefix, false, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &extensions.DaemonSet{} },
|
NewFunc: func() runtime.Object { return &extensions.DaemonSet{} },
|
||||||
|
@ -23,15 +23,15 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
||||||
daemonSetStorage, statusStorage := NewREST(etcdStorage, storage.NoDecoration)
|
daemonSetStorage, statusStorage := NewREST(etcdStorage, generic.UndecoratedStorage)
|
||||||
return daemonSetStorage, statusStorage, fakeClient
|
return daemonSetStorage, statusStorage, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,8 +39,8 @@ type DeploymentStorage struct {
|
|||||||
Scale *ScaleREST
|
Scale *ScaleREST
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewStorage(s storage.Interface, storageFactory storage.StorageFactory) DeploymentStorage {
|
func NewStorage(s storage.Interface, storageDecorator generic.StorageDecorator) DeploymentStorage {
|
||||||
deploymentRest, deploymentStatusRest := NewREST(s, storageFactory)
|
deploymentRest, deploymentStatusRest := NewREST(s, storageDecorator)
|
||||||
deploymentRegistry := deployment.NewRegistry(deploymentRest)
|
deploymentRegistry := deployment.NewRegistry(deploymentRest)
|
||||||
|
|
||||||
return DeploymentStorage{
|
return DeploymentStorage{
|
||||||
@ -55,12 +55,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against deployments.
|
// NewREST returns a RESTStorage object that will work against deployments.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) (*REST, *StatusREST) {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*REST, *StatusREST) {
|
||||||
prefix := "/deployments"
|
prefix := "/deployments"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &extensions.DeploymentList{} }
|
newListFunc := func() runtime.Object { return &extensions.DeploymentList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &extensions.Deployment{}, prefix, false, newListFunc)
|
s, 100, &extensions.Deployment{}, prefix, false, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &extensions.Deployment{} },
|
NewFunc: func() runtime.Object { return &extensions.Deployment{} },
|
||||||
|
@ -24,9 +24,9 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
@ -34,7 +34,7 @@ import (
|
|||||||
|
|
||||||
func newStorage(t *testing.T) (*DeploymentStorage, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*DeploymentStorage, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
||||||
deploymentStorage := NewStorage(etcdStorage, storage.NoDecoration)
|
deploymentStorage := NewStorage(etcdStorage, generic.UndecoratedStorage)
|
||||||
return &deploymentStorage, fakeClient
|
return &deploymentStorage, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,12 +32,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against endpoints.
|
// NewREST returns a RESTStorage object that will work against endpoints.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) *REST {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *REST {
|
||||||
prefix := "/services/endpoints"
|
prefix := "/services/endpoints"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.EndpointsList{} }
|
newListFunc := func() runtime.Object { return &api.EndpointsList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 1000, nil, &api.Endpoints{}, prefix, true, newListFunc)
|
s, 1000, &api.Endpoints{}, prefix, true, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.Endpoints{} },
|
NewFunc: func() runtime.Object { return &api.Endpoints{} },
|
||||||
|
@ -22,15 +22,15 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
return NewREST(etcdStorage, storage.NoDecoration), fakeClient
|
return NewREST(etcdStorage, generic.UndecoratedStorage), fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func validNewEndpoints() *api.Endpoints {
|
func validNewEndpoints() *api.Endpoints {
|
||||||
|
@ -32,7 +32,7 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against events.
|
// NewREST returns a RESTStorage object that will work against events.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory, ttl uint64) *REST {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator, ttl uint64) *REST {
|
||||||
prefix := "/events"
|
prefix := "/events"
|
||||||
|
|
||||||
// We explicitly do NOT do any decoration here - switching on Cacher
|
// We explicitly do NOT do any decoration here - switching on Cacher
|
||||||
|
@ -20,9 +20,9 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ var testTTL uint64 = 60
|
|||||||
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
fakeClient.HideExpires = true
|
fakeClient.HideExpires = true
|
||||||
return NewREST(etcdStorage, storage.NoDecoration, testTTL), fakeClient
|
return NewREST(etcdStorage, generic.UndecoratedStorage, testTTL), fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func validNewEvent(namespace string) *api.Event {
|
func validNewEvent(namespace string) *api.Event {
|
||||||
|
@ -27,6 +27,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/registry/controller"
|
"k8s.io/kubernetes/pkg/registry/controller"
|
||||||
"k8s.io/kubernetes/pkg/registry/controller/etcd"
|
"k8s.io/kubernetes/pkg/registry/controller/etcd"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
)
|
)
|
||||||
@ -37,9 +38,9 @@ type ContainerStorage struct {
|
|||||||
Scale *ScaleREST
|
Scale *ScaleREST
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewStorage(s storage.Interface, storageFactory storage.StorageFactory) ContainerStorage {
|
func NewStorage(s storage.Interface, storageDecorator generic.StorageDecorator) ContainerStorage {
|
||||||
// scale does not set status, only updates spec so we ignore the status
|
// scale does not set status, only updates spec so we ignore the status
|
||||||
controllerREST, _ := etcd.NewREST(s, storageFactory)
|
controllerREST, _ := etcd.NewREST(s, storageDecorator)
|
||||||
rcRegistry := controller.NewRegistry(controllerREST)
|
rcRegistry := controller.NewRegistry(controllerREST)
|
||||||
|
|
||||||
return ContainerStorage{
|
return ContainerStorage{
|
||||||
|
@ -22,9 +22,9 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
@ -32,7 +32,7 @@ import (
|
|||||||
|
|
||||||
func newStorage(t *testing.T) (*ScaleREST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*ScaleREST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
return NewStorage(etcdStorage, storage.NoDecoration).Scale, fakeClient
|
return NewStorage(etcdStorage, generic.UndecoratedStorage).Scale, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
var validPodTemplate = api.PodTemplate{
|
var validPodTemplate = api.PodTemplate{
|
||||||
|
36
pkg/registry/generic/etcd/storage_factory.go
Normal file
36
pkg/registry/generic/etcd/storage_factory.go
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 The Kubernetes Authors All rights reserved.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package etcd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
|
"k8s.io/kubernetes/pkg/storage"
|
||||||
|
etcdstorage "k8s.io/kubernetes/pkg/storage/etcd"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Creates a cacher on top of the given 'storageInterface'.
|
||||||
|
func StorageWithCacher(
|
||||||
|
storageInterface storage.Interface,
|
||||||
|
capacity int,
|
||||||
|
objectType runtime.Object,
|
||||||
|
resourcePrefix string,
|
||||||
|
namespaceScoped bool,
|
||||||
|
newListFunc func() runtime.Object) storage.Interface {
|
||||||
|
return storage.NewCacher(
|
||||||
|
storageInterface, capacity, etcdstorage.APIObjectVersioner{},
|
||||||
|
objectType, resourcePrefix, namespaceScoped, newListFunc)
|
||||||
|
}
|
43
pkg/registry/generic/storage_decorator.go
Normal file
43
pkg/registry/generic/storage_decorator.go
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 The Kubernetes Authors All rights reserved.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package generic
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
|
"k8s.io/kubernetes/pkg/storage"
|
||||||
|
)
|
||||||
|
|
||||||
|
// StorageDecorator is a function signature for producing
|
||||||
|
// a storage.Interface from given parameters.
|
||||||
|
type StorageDecorator func(
|
||||||
|
storageInterface storage.Interface,
|
||||||
|
capacity int,
|
||||||
|
objectType runtime.Object,
|
||||||
|
resourcePrefix string,
|
||||||
|
namespaceScoped bool,
|
||||||
|
newListFunc func() runtime.Object) storage.Interface
|
||||||
|
|
||||||
|
// Returns given 'storageInterface' without any decoration.
|
||||||
|
func UndecoratedStorage(
|
||||||
|
storageInterface storage.Interface,
|
||||||
|
capacity int,
|
||||||
|
objectType runtime.Object,
|
||||||
|
resourcePrefix string,
|
||||||
|
namespaceScoped bool,
|
||||||
|
newListFunc func() runtime.Object) storage.Interface {
|
||||||
|
return storageInterface
|
||||||
|
}
|
@ -33,12 +33,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against horizontal pod autoscalers.
|
// NewREST returns a RESTStorage object that will work against horizontal pod autoscalers.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) (*REST, *StatusREST) {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*REST, *StatusREST) {
|
||||||
prefix := "/horizontalpodautoscalers"
|
prefix := "/horizontalpodautoscalers"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &extensions.HorizontalPodAutoscalerList{} }
|
newListFunc := func() runtime.Object { return &extensions.HorizontalPodAutoscalerList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &extensions.HorizontalPodAutoscaler{}, prefix, false, newListFunc)
|
s, 100, &extensions.HorizontalPodAutoscaler{}, prefix, false, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &extensions.HorizontalPodAutoscaler{} },
|
NewFunc: func() runtime.Object { return &extensions.HorizontalPodAutoscaler{} },
|
||||||
|
@ -25,15 +25,15 @@ import (
|
|||||||
_ "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
_ "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
||||||
horizontalPodAutoscalerStorage, statusStorage := NewREST(etcdStorage, storage.NoDecoration)
|
horizontalPodAutoscalerStorage, statusStorage := NewREST(etcdStorage, generic.UndecoratedStorage)
|
||||||
return horizontalPodAutoscalerStorage, statusStorage, fakeClient
|
return horizontalPodAutoscalerStorage, statusStorage, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,12 +34,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against replication controllers.
|
// NewREST returns a RESTStorage object that will work against replication controllers.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) (*REST, *StatusREST) {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*REST, *StatusREST) {
|
||||||
prefix := "/ingress"
|
prefix := "/ingress"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &extensions.IngressList{} }
|
newListFunc := func() runtime.Object { return &extensions.IngressList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &extensions.Ingress{}, prefix, false, newListFunc)
|
s, 100, &extensions.Ingress{}, prefix, false, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &extensions.Ingress{} },
|
NewFunc: func() runtime.Object { return &extensions.Ingress{} },
|
||||||
|
@ -23,16 +23,16 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
||||||
ingressStorage, statusStorage := NewREST(etcdStorage, storage.NoDecoration)
|
ingressStorage, statusStorage := NewREST(etcdStorage, generic.UndecoratedStorage)
|
||||||
return ingressStorage, statusStorage, fakeClient
|
return ingressStorage, statusStorage, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,12 +34,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against Jobs.
|
// NewREST returns a RESTStorage object that will work against Jobs.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) (*REST, *StatusREST) {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*REST, *StatusREST) {
|
||||||
prefix := "/jobs"
|
prefix := "/jobs"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &extensions.JobList{} }
|
newListFunc := func() runtime.Object { return &extensions.JobList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &extensions.Job{}, prefix, false, newListFunc)
|
s, 100, &extensions.Job{}, prefix, false, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &extensions.Job{} },
|
NewFunc: func() runtime.Object { return &extensions.Job{} },
|
||||||
|
@ -25,15 +25,15 @@ import (
|
|||||||
_ "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
_ "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
||||||
jobStorage, statusStorage := NewREST(etcdStorage, storage.NoDecoration)
|
jobStorage, statusStorage := NewREST(etcdStorage, generic.UndecoratedStorage)
|
||||||
return jobStorage, statusStorage, fakeClient
|
return jobStorage, statusStorage, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,12 +32,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against horizontal pod autoscalers.
|
// NewREST returns a RESTStorage object that will work against horizontal pod autoscalers.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) *REST {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *REST {
|
||||||
prefix := "/limitranges"
|
prefix := "/limitranges"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.LimitRangeList{} }
|
newListFunc := func() runtime.Object { return &api.LimitRangeList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &api.LimitRange{}, prefix, true, newListFunc)
|
s, 100, &api.LimitRange{}, prefix, true, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.LimitRange{} },
|
NewFunc: func() runtime.Object { return &api.LimitRange{} },
|
||||||
|
@ -23,15 +23,15 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/resource"
|
"k8s.io/kubernetes/pkg/api/resource"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
return NewREST(etcdStorage, storage.NoDecoration), fakeClient
|
return NewREST(etcdStorage, generic.UndecoratedStorage), fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func validNewLimitRange() *api.LimitRange {
|
func validNewLimitRange() *api.LimitRange {
|
||||||
|
@ -48,12 +48,12 @@ type FinalizeREST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against namespaces.
|
// NewREST returns a RESTStorage object that will work against namespaces.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) (*REST, *StatusREST, *FinalizeREST) {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*REST, *StatusREST, *FinalizeREST) {
|
||||||
prefix := "/namespaces"
|
prefix := "/namespaces"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.NamespaceList{} }
|
newListFunc := func() runtime.Object { return &api.NamespaceList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &api.Namespace{}, prefix, true, newListFunc)
|
s, 100, &api.Namespace{}, prefix, true, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.Namespace{} },
|
NewFunc: func() runtime.Object { return &api.Namespace{} },
|
||||||
|
@ -24,16 +24,16 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
namespaceStorage, _, _ := NewREST(etcdStorage, storage.NoDecoration)
|
namespaceStorage, _, _ := NewREST(etcdStorage, generic.UndecoratedStorage)
|
||||||
return namespaceStorage, fakeClient
|
return namespaceStorage, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd"
|
etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd"
|
||||||
"k8s.io/kubernetes/pkg/registry/node"
|
"k8s.io/kubernetes/pkg/registry/node"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
@ -50,12 +51,12 @@ func (r *StatusREST) Update(ctx api.Context, obj runtime.Object) (runtime.Object
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against nodes.
|
// NewREST returns a RESTStorage object that will work against nodes.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory, connection client.ConnectionInfoGetter, proxyTransport http.RoundTripper) (*REST, *StatusREST) {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator, connection client.ConnectionInfoGetter, proxyTransport http.RoundTripper) (*REST, *StatusREST) {
|
||||||
prefix := "/minions"
|
prefix := "/minions"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.NodeList{} }
|
newListFunc := func() runtime.Object { return &api.NodeList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 1000, nil, &api.Node{}, prefix, false, newListFunc)
|
s, 1000, &api.Node{}, prefix, false, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.Node{} },
|
NewFunc: func() runtime.Object { return &api.Node{} },
|
||||||
|
@ -24,9 +24,9 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/resource"
|
"k8s.io/kubernetes/pkg/api/resource"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ func (fakeConnectionInfoGetter) GetConnectionInfo(host string) (string, uint, ht
|
|||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
storage, _ := NewREST(etcdStorage, storage.NoDecoration, fakeConnectionInfoGetter{}, nil)
|
storage, _ := NewREST(etcdStorage, generic.UndecoratedStorage, fakeConnectionInfoGetter{}, nil)
|
||||||
return storage, fakeClient
|
return storage, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,12 +32,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against persistent volumes.
|
// NewREST returns a RESTStorage object that will work against persistent volumes.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) (*REST, *StatusREST) {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*REST, *StatusREST) {
|
||||||
prefix := "/persistentvolumes"
|
prefix := "/persistentvolumes"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.PersistentVolumeList{} }
|
newListFunc := func() runtime.Object { return &api.PersistentVolumeList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &api.PersistentVolume{}, prefix, true, newListFunc)
|
s, 100, &api.PersistentVolume{}, prefix, true, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.PersistentVolume{} },
|
NewFunc: func() runtime.Object { return &api.PersistentVolume{} },
|
||||||
|
@ -24,9 +24,9 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
@ -34,7 +34,7 @@ import (
|
|||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
persistentVolumeStorage, statusStorage := NewREST(etcdStorage, storage.NoDecoration)
|
persistentVolumeStorage, statusStorage := NewREST(etcdStorage, generic.UndecoratedStorage)
|
||||||
return persistentVolumeStorage, statusStorage, fakeClient
|
return persistentVolumeStorage, statusStorage, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,12 +32,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against persistent volume claims.
|
// NewREST returns a RESTStorage object that will work against persistent volume claims.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) (*REST, *StatusREST) {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*REST, *StatusREST) {
|
||||||
prefix := "/persistentvolumeclaims"
|
prefix := "/persistentvolumeclaims"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.PersistentVolumeClaimList{} }
|
newListFunc := func() runtime.Object { return &api.PersistentVolumeClaimList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &api.PersistentVolumeClaim{}, prefix, true, newListFunc)
|
s, 100, &api.PersistentVolumeClaim{}, prefix, true, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.PersistentVolumeClaim{} },
|
NewFunc: func() runtime.Object { return &api.PersistentVolumeClaim{} },
|
||||||
|
@ -24,9 +24,9 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
@ -34,7 +34,7 @@ import (
|
|||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
persistentVolumeClaimStorage, statusStorage := NewREST(etcdStorage, storage.NoDecoration)
|
persistentVolumeClaimStorage, statusStorage := NewREST(etcdStorage, generic.UndecoratedStorage)
|
||||||
return persistentVolumeClaimStorage, statusStorage, fakeClient
|
return persistentVolumeClaimStorage, statusStorage, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,12 +57,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewStorage returns a RESTStorage object that will work against pods.
|
// NewStorage returns a RESTStorage object that will work against pods.
|
||||||
func NewStorage(s storage.Interface, storageFactory storage.StorageFactory, k client.ConnectionInfoGetter, proxyTransport http.RoundTripper) PodStorage {
|
func NewStorage(s storage.Interface, storageDecorator generic.StorageDecorator, k client.ConnectionInfoGetter, proxyTransport http.RoundTripper) PodStorage {
|
||||||
prefix := "/pods"
|
prefix := "/pods"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.PodList{} }
|
newListFunc := func() runtime.Object { return &api.PodList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 1000, nil, &api.Pod{}, prefix, true, newListFunc)
|
s, 1000, &api.Pod{}, prefix, true, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.Pod{} },
|
NewFunc: func() runtime.Object { return &api.Pod{} },
|
||||||
|
@ -28,10 +28,10 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/securitycontext"
|
"k8s.io/kubernetes/pkg/securitycontext"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
@ -39,7 +39,7 @@ import (
|
|||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *BindingREST, *StatusREST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *BindingREST, *StatusREST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
storage := NewStorage(etcdStorage, storage.NoDecoration, nil, nil)
|
storage := NewStorage(etcdStorage, generic.UndecoratedStorage, nil, nil)
|
||||||
return storage.Pod, storage.Binding, storage.Status, fakeClient
|
return storage.Pod, storage.Binding, storage.Status, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,12 +32,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against pod templates.
|
// NewREST returns a RESTStorage object that will work against pod templates.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) *REST {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *REST {
|
||||||
prefix := "/podtemplates"
|
prefix := "/podtemplates"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.PodTemplateList{} }
|
newListFunc := func() runtime.Object { return &api.PodTemplateList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &api.PodTemplate{}, prefix, false, newListFunc)
|
s, 100, &api.PodTemplate{}, prefix, false, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.PodTemplate{} },
|
NewFunc: func() runtime.Object { return &api.PodTemplate{} },
|
||||||
|
@ -22,15 +22,15 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
return NewREST(etcdStorage, storage.NoDecoration), fakeClient
|
return NewREST(etcdStorage, generic.UndecoratedStorage), fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func validNewPodTemplate(name string) *api.PodTemplate {
|
func validNewPodTemplate(name string) *api.PodTemplate {
|
||||||
|
@ -32,12 +32,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against resource quotas.
|
// NewREST returns a RESTStorage object that will work against resource quotas.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) (*REST, *StatusREST) {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) (*REST, *StatusREST) {
|
||||||
prefix := "/resourcequotas"
|
prefix := "/resourcequotas"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.ResourceQuotaList{} }
|
newListFunc := func() runtime.Object { return &api.ResourceQuotaList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &api.ResourceQuota{}, prefix, true, newListFunc)
|
s, 100, &api.ResourceQuota{}, prefix, true, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.ResourceQuota{} },
|
NewFunc: func() runtime.Object { return &api.ResourceQuota{} },
|
||||||
|
@ -25,9 +25,9 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
@ -35,7 +35,7 @@ import (
|
|||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
resourceQuotaStorage, statusStorage := NewREST(etcdStorage, storage.NoDecoration)
|
resourceQuotaStorage, statusStorage := NewREST(etcdStorage, generic.UndecoratedStorage)
|
||||||
return resourceQuotaStorage, statusStorage, fakeClient
|
return resourceQuotaStorage, statusStorage, fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,12 +32,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against secrets.
|
// NewREST returns a RESTStorage object that will work against secrets.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) *REST {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *REST {
|
||||||
prefix := "/secrets"
|
prefix := "/secrets"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.SecretList{} }
|
newListFunc := func() runtime.Object { return &api.SecretList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &api.Secret{}, prefix, true, newListFunc)
|
s, 100, &api.Secret{}, prefix, true, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.Secret{} },
|
NewFunc: func() runtime.Object { return &api.Secret{} },
|
||||||
|
@ -22,15 +22,15 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
return NewREST(etcdStorage, storage.NoDecoration), fakeClient
|
return NewREST(etcdStorage, generic.UndecoratedStorage), fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func validNewSecret(name string) *api.Secret {
|
func validNewSecret(name string) *api.Secret {
|
||||||
|
@ -32,12 +32,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against services.
|
// NewREST returns a RESTStorage object that will work against services.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) *REST {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *REST {
|
||||||
prefix := "/services/specs"
|
prefix := "/services/specs"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.ServiceList{} }
|
newListFunc := func() runtime.Object { return &api.ServiceList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &api.Service{}, prefix, false, newListFunc)
|
s, 100, &api.Service{}, prefix, false, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.Service{} },
|
NewFunc: func() runtime.Object { return &api.Service{} },
|
||||||
|
@ -22,16 +22,16 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
return NewREST(etcdStorage, storage.NoDecoration), fakeClient
|
return NewREST(etcdStorage, generic.UndecoratedStorage), fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func validService() *api.Service {
|
func validService() *api.Service {
|
||||||
|
@ -32,12 +32,12 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a RESTStorage object that will work against service accounts.
|
// NewREST returns a RESTStorage object that will work against service accounts.
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) *REST {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *REST {
|
||||||
prefix := "/serviceaccounts"
|
prefix := "/serviceaccounts"
|
||||||
|
|
||||||
newListFunc := func() runtime.Object { return &api.ServiceAccountList{} }
|
newListFunc := func() runtime.Object { return &api.ServiceAccountList{} }
|
||||||
storageInterface := storageFactory(
|
storageInterface := storageDecorator(
|
||||||
s, 100, nil, &api.ServiceAccount{}, prefix, true, newListFunc)
|
s, 100, &api.ServiceAccount{}, prefix, true, newListFunc)
|
||||||
|
|
||||||
store := &etcdgeneric.Etcd{
|
store := &etcdgeneric.Etcd{
|
||||||
NewFunc: func() runtime.Object { return &api.ServiceAccount{} },
|
NewFunc: func() runtime.Object { return &api.ServiceAccount{} },
|
||||||
|
@ -22,15 +22,15 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "")
|
||||||
return NewREST(etcdStorage, storage.NoDecoration), fakeClient
|
return NewREST(etcdStorage, generic.UndecoratedStorage), fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func validNewServiceAccount(name string) *api.ServiceAccount {
|
func validNewServiceAccount(name string) *api.ServiceAccount {
|
||||||
|
@ -34,7 +34,7 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a registry which will store ThirdPartyResource in the given helper
|
// NewREST returns a registry which will store ThirdPartyResource in the given helper
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory) *REST {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *REST {
|
||||||
prefix := "/thirdpartyresources"
|
prefix := "/thirdpartyresources"
|
||||||
|
|
||||||
// We explicitly do NOT do any decoration here yet.
|
// We explicitly do NOT do any decoration here yet.
|
||||||
|
@ -25,15 +25,15 @@ import (
|
|||||||
_ "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
_ "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
||||||
return NewREST(etcdStorage, storage.NoDecoration), fakeClient
|
return NewREST(etcdStorage, generic.UndecoratedStorage), fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func validNewThirdPartyResource(name string) *extensions.ThirdPartyResource {
|
func validNewThirdPartyResource(name string) *extensions.ThirdPartyResource {
|
||||||
|
@ -36,7 +36,7 @@ type REST struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewREST returns a registry which will store ThirdPartyResourceData in the given helper
|
// NewREST returns a registry which will store ThirdPartyResourceData in the given helper
|
||||||
func NewREST(s storage.Interface, storageFactory storage.StorageFactory, group, kind string) *REST {
|
func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator, group, kind string) *REST {
|
||||||
prefix := "/ThirdPartyResourceData/" + group + "/" + strings.ToLower(kind) + "s"
|
prefix := "/ThirdPartyResourceData/" + group + "/" + strings.ToLower(kind) + "s"
|
||||||
|
|
||||||
// We explicitly do NOT do any decoration here yet.
|
// We explicitly do NOT do any decoration here yet.
|
||||||
|
@ -25,15 +25,15 @@ import (
|
|||||||
_ "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
_ "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
||||||
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
etcdStorage, fakeClient := registrytest.NewEtcdStorage(t, "extensions")
|
||||||
return NewREST(etcdStorage, storage.NoDecoration, "foo", "bar"), fakeClient
|
return NewREST(etcdStorage, generic.UndecoratedStorage, "foo", "bar"), fakeClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func validNewThirdPartyResourceData(name string) *extensions.ThirdPartyResourceData {
|
func validNewThirdPartyResourceData(name string) *extensions.ThirdPartyResourceData {
|
||||||
|
@ -112,28 +112,6 @@ type Cacher struct {
|
|||||||
ListFromCache bool
|
ListFromCache bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// StorageFactory is a function signature for producing
|
|
||||||
// a storage.Interface from given parameters.
|
|
||||||
type StorageFactory func(
|
|
||||||
storage Interface,
|
|
||||||
capacity int,
|
|
||||||
versioner Versioner,
|
|
||||||
objectType runtime.Object,
|
|
||||||
resourcePrefix string,
|
|
||||||
namespaceScoped bool,
|
|
||||||
newListFunc func() runtime.Object) Interface
|
|
||||||
|
|
||||||
func NoDecoration(
|
|
||||||
storage Interface,
|
|
||||||
capacity int,
|
|
||||||
versioner Versioner,
|
|
||||||
objectType runtime.Object,
|
|
||||||
resourcePrefix string,
|
|
||||||
namespaceScoped bool,
|
|
||||||
newListFunc func() runtime.Object) Interface {
|
|
||||||
return storage
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a new Cacher responsible from service WATCH and LIST requests from its
|
// Create a new Cacher responsible from service WATCH and LIST requests from its
|
||||||
// internal cache and updating its cache in the background based on the given
|
// internal cache and updating its cache in the background based on the given
|
||||||
// configuration.
|
// configuration.
|
||||||
|
Loading…
Reference in New Issue
Block a user