Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
a923acd0
Unverified
Commit
a923acd0
authored
Apr 05, 2018
by
natronq
Committed by
Yannick Pobiega
Apr 05, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Run hack/update-codegen.sh
parent
4f4798a4
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
715 additions
and
78 deletions
+715
-78
factory.go
.../informers/informers_generated/internalversion/factory.go
+55
-6
factory.go
...lient-go/pkg/client/informers/externalversions/factory.go
+55
-6
factory.go
...piserver/pkg/client/informers/externalversions/factory.go
+55
-6
factory.go
...apiserver/pkg/client/informers/internalversion/factory.go
+55
-6
factory.go
staging/src/k8s.io/client-go/informers/factory.go
+55
-6
factory.go
..._examples/apiserver/informers/externalversions/factory.go
+55
-6
factory.go
.../_examples/apiserver/informers/internalversion/factory.go
+55
-6
factory.go
...rator/_examples/crd/informers/externalversions/factory.go
+55
-6
factory.go
...gregator/pkg/client/informers/externalversions/factory.go
+55
-6
factory.go
...ggregator/pkg/client/informers/internalversion/factory.go
+55
-6
factory.go
...piserver/pkg/client/informers/externalversions/factory.go
+55
-6
factory.go
...apiserver/pkg/client/informers/internalversion/factory.go
+55
-6
factory.go
...ntroller/pkg/client/informers/externalversions/factory.go
+55
-6
No files found.
pkg/client/informers/informers_generated/internalversion/factory.go
View file @
a923acd0
...
@@ -44,12 +44,16 @@ import (
...
@@ -44,12 +44,16 @@ import (
storage
"k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/storage"
storage
"k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/storage"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
internalclientset
.
Interface
client
internalclientset
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -57,23 +61,62 @@ type sharedInformerFactory struct {
...
@@ -57,23 +61,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -122,7 +165,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -122,7 +165,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
staging/src/k8s.io/apiextensions-apiserver/examples/client-go/pkg/client/informers/externalversions/factory.go
View file @
a923acd0
...
@@ -32,12 +32,16 @@ import (
...
@@ -32,12 +32,16 @@ import (
cache
"k8s.io/client-go/tools/cache"
cache
"k8s.io/client-go/tools/cache"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
versioned
.
Interface
client
versioned
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/factory.go
View file @
a923acd0
...
@@ -32,12 +32,16 @@ import (
...
@@ -32,12 +32,16 @@ import (
cache
"k8s.io/client-go/tools/cache"
cache
"k8s.io/client-go/tools/cache"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
clientset
.
Interface
client
clientset
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
clientset
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
clientset
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
clientset
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
clientset
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
clientset
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion/factory.go
View file @
a923acd0
...
@@ -32,12 +32,16 @@ import (
...
@@ -32,12 +32,16 @@ import (
cache
"k8s.io/client-go/tools/cache"
cache
"k8s.io/client-go/tools/cache"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
internalclientset
.
Interface
client
internalclientset
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
staging/src/k8s.io/client-go/informers/factory.go
View file @
a923acd0
...
@@ -45,12 +45,16 @@ import (
...
@@ -45,12 +45,16 @@ import (
cache
"k8s.io/client-go/tools/cache"
cache
"k8s.io/client-go/tools/cache"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
kubernetes
.
Interface
client
kubernetes
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -58,23 +62,62 @@ type sharedInformerFactory struct {
...
@@ -58,23 +62,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
kubernetes
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
kubernetes
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
kubernetes
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
kubernetes
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
kubernetes
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -123,7 +166,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -123,7 +166,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
staging/src/k8s.io/code-generator/_examples/apiserver/informers/externalversions/factory.go
View file @
a923acd0
...
@@ -33,12 +33,16 @@ import (
...
@@ -33,12 +33,16 @@ import (
internalinterfaces
"k8s.io/code-generator/_examples/apiserver/informers/externalversions/internalinterfaces"
internalinterfaces
"k8s.io/code-generator/_examples/apiserver/informers/externalversions/internalinterfaces"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
versioned
.
Interface
client
versioned
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -46,23 +50,62 @@ type sharedInformerFactory struct {
...
@@ -46,23 +50,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -111,7 +154,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -111,7 +154,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
staging/src/k8s.io/code-generator/_examples/apiserver/informers/internalversion/factory.go
View file @
a923acd0
...
@@ -33,12 +33,16 @@ import (
...
@@ -33,12 +33,16 @@ import (
internalinterfaces
"k8s.io/code-generator/_examples/apiserver/informers/internalversion/internalinterfaces"
internalinterfaces
"k8s.io/code-generator/_examples/apiserver/informers/internalversion/internalinterfaces"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
internalversion
.
Interface
client
internalversion
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -46,23 +50,62 @@ type sharedInformerFactory struct {
...
@@ -46,23 +50,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
internalversion
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
internalversion
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
internalversion
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
internalversion
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
internalversion
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -111,7 +154,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -111,7 +154,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
staging/src/k8s.io/code-generator/_examples/crd/informers/externalversions/factory.go
View file @
a923acd0
...
@@ -33,12 +33,16 @@ import (
...
@@ -33,12 +33,16 @@ import (
internalinterfaces
"k8s.io/code-generator/_examples/crd/informers/externalversions/internalinterfaces"
internalinterfaces
"k8s.io/code-generator/_examples/crd/informers/externalversions/internalinterfaces"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
versioned
.
Interface
client
versioned
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -46,23 +50,62 @@ type sharedInformerFactory struct {
...
@@ -46,23 +50,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -111,7 +154,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -111,7 +154,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
staging/src/k8s.io/kube-aggregator/pkg/client/informers/externalversions/factory.go
View file @
a923acd0
...
@@ -32,12 +32,16 @@ import (
...
@@ -32,12 +32,16 @@ import (
internalinterfaces
"k8s.io/kube-aggregator/pkg/client/informers/externalversions/internalinterfaces"
internalinterfaces
"k8s.io/kube-aggregator/pkg/client/informers/externalversions/internalinterfaces"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
clientset
.
Interface
client
clientset
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
clientset
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
clientset
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
clientset
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
clientset
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
clientset
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
staging/src/k8s.io/kube-aggregator/pkg/client/informers/internalversion/factory.go
View file @
a923acd0
...
@@ -32,12 +32,16 @@ import (
...
@@ -32,12 +32,16 @@ import (
internalinterfaces
"k8s.io/kube-aggregator/pkg/client/informers/internalversion/internalinterfaces"
internalinterfaces
"k8s.io/kube-aggregator/pkg/client/informers/internalversion/internalinterfaces"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
internalclientset
.
Interface
client
internalclientset
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
internalclientset
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
staging/src/k8s.io/sample-apiserver/pkg/client/informers/externalversions/factory.go
View file @
a923acd0
...
@@ -32,12 +32,16 @@ import (
...
@@ -32,12 +32,16 @@ import (
wardle
"k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle"
wardle
"k8s.io/sample-apiserver/pkg/client/informers/externalversions/wardle"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
versioned
.
Interface
client
versioned
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
staging/src/k8s.io/sample-apiserver/pkg/client/informers/internalversion/factory.go
View file @
a923acd0
...
@@ -32,12 +32,16 @@ import (
...
@@ -32,12 +32,16 @@ import (
wardle
"k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle"
wardle
"k8s.io/sample-apiserver/pkg/client/informers/internalversion/wardle"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
internalversion
.
Interface
client
internalversion
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
internalversion
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
internalversion
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
internalversion
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
internalversion
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
internalversion
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
staging/src/k8s.io/sample-controller/pkg/client/informers/externalversions/factory.go
View file @
a923acd0
...
@@ -32,12 +32,16 @@ import (
...
@@ -32,12 +32,16 @@ import (
samplecontroller
"k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller"
samplecontroller
"k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller"
)
)
// SharedInformerOption defines the functional option type for SharedInformerFactory.
type
SharedInformerOption
func
(
*
sharedInformerFactory
)
*
sharedInformerFactory
type
sharedInformerFactory
struct
{
type
sharedInformerFactory
struct
{
client
versioned
.
Interface
client
versioned
.
Interface
namespace
string
namespace
string
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
lock
sync
.
Mutex
lock
sync
.
Mutex
defaultResync
time
.
Duration
defaultResync
time
.
Duration
customResync
map
[
reflect
.
Type
]
time
.
Duration
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
informers
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
// startedInformers is used for tracking which informers have been started.
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
...
@@ -45,23 +49,62 @@ type sharedInformerFactory struct {
startedInformers
map
[
reflect
.
Type
]
bool
startedInformers
map
[
reflect
.
Type
]
bool
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory
// WithCustomResyncConfig sets a custom resync period for the specified informer types.
func
WithCustomResyncConfig
(
resyncConfig
map
[
v1
.
Object
]
time
.
Duration
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
for
k
,
v
:=
range
resyncConfig
{
factory
.
customResync
[
reflect
.
TypeOf
(
k
)]
=
v
}
return
factory
}
}
// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.
func
WithTweakListOptions
(
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
tweakListOptions
=
tweakListOptions
return
factory
}
}
// WithNamespace limits the SharedInformerFactory to the specified namespace.
func
WithNamespace
(
namespace
string
)
SharedInformerOption
{
return
func
(
factory
*
sharedInformerFactory
)
*
sharedInformerFactory
{
factory
.
namespace
=
namespace
return
factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func
NewSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
func
NewSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
)
SharedInformerFactory
{
return
New
FilteredSharedInformerFactory
(
client
,
defaultResync
,
v1
.
NamespaceAll
,
nil
)
return
New
SharedInformerFactoryWithOptions
(
client
,
defaultResync
)
}
}
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory.
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// Listers obtained via this SharedInformerFactory will be subject to the same filters
// as specified here.
// as specified here.
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
func
NewFilteredSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
func
NewFilteredSharedInformerFactory
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
namespace
string
,
tweakListOptions
internalinterfaces
.
TweakListOptionsFunc
)
SharedInformerFactory
{
return
&
sharedInformerFactory
{
return
NewSharedInformerFactoryWithOptions
(
client
,
defaultResync
,
WithNamespace
(
namespace
),
WithTweakListOptions
(
tweakListOptions
))
}
// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options.
func
NewSharedInformerFactoryWithOptions
(
client
versioned
.
Interface
,
defaultResync
time
.
Duration
,
options
...
SharedInformerOption
)
SharedInformerFactory
{
factory
:=
&
sharedInformerFactory
{
client
:
client
,
client
:
client
,
namespace
:
namespace
,
namespace
:
v1
.
NamespaceAll
,
tweakListOptions
:
tweakListOptions
,
defaultResync
:
defaultResync
,
defaultResync
:
defaultResync
,
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
informers
:
make
(
map
[
reflect
.
Type
]
cache
.
SharedIndexInformer
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
startedInformers
:
make
(
map
[
reflect
.
Type
]
bool
),
customResync
:
make
(
map
[
reflect
.
Type
]
time
.
Duration
),
}
// Apply all options
for
_
,
opt
:=
range
options
{
factory
=
opt
(
factory
)
}
}
return
factory
}
}
// Start initializes all requested informers.
// Start initializes all requested informers.
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
...
@@ -110,7 +153,13 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
if
exists
{
if
exists
{
return
informer
return
informer
}
}
informer
=
newFunc
(
f
.
client
,
f
.
defaultResync
)
resyncPeriod
,
exists
:=
f
.
customResync
[
informerType
]
if
!
exists
{
resyncPeriod
=
f
.
defaultResync
}
informer
=
newFunc
(
f
.
client
,
resyncPeriod
)
f
.
informers
[
informerType
]
=
informer
f
.
informers
[
informerType
]
=
informer
return
informer
return
informer
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment