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
875ba289
Unverified
Commit
875ba289
authored
Apr 26, 2019
by
Darren Shepherd
Committed by
GitHub
Apr 26, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #375 from galal-hussein/schedule_svclb
Add node selector to service loadbalancer controller
parents
50f405dd
f293e146
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
112 additions
and
73 deletions
+112
-73
controller.go
pkg/servicelb/controller.go
+76
-37
zz_generated_daemon_set_controller.go
types/apis/apps/v1/zz_generated_daemon_set_controller.go
+0
-0
zz_generated_daemon_set_lifecycle_adapter.go
...apis/apps/v1/zz_generated_daemon_set_lifecycle_adapter.go
+17
-17
zz_generated_deepcopy.go
types/apis/apps/v1/zz_generated_deepcopy.go
+6
-6
zz_generated_k8s_client.go
types/apis/apps/v1/zz_generated_k8s_client.go
+11
-11
zz_generated_scheme.go
types/apis/apps/v1/zz_generated_scheme.go
+1
-1
main.go
types/codegen/main.go
+1
-1
No files found.
pkg/servicelb/controller.go
View file @
875ba289
...
@@ -21,13 +21,16 @@ import (
...
@@ -21,13 +21,16 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes"
v1getter
"k8s.io/client-go/kubernetes/typed/apps/v1"
coregetter
"k8s.io/client-go/kubernetes/typed/core/v1"
coregetter
"k8s.io/client-go/kubernetes/typed/core/v1"
)
)
const
(
const
(
image
=
"rancher/klipper-lb:v0.1.1"
image
=
"rancher/klipper-lb:v0.1.1"
svcNameLabel
=
"svccontroller.k3s.cattle.io/svcname"
svcNameLabel
=
"svccontroller.k3s.cattle.io/svcname"
Ready
=
condition
.
Cond
(
"Ready"
)
daemonsetNodeLabel
=
"svccontroller.k3s.cattle.io/enablelb"
nodeSelectorLabel
=
"svccontroller.k3s.cattle.io/nodeselector"
Ready
=
condition
.
Cond
(
"Ready"
)
)
)
var
(
var
(
...
@@ -44,12 +47,14 @@ func Register(ctx context.Context, kubernetes kubernetes.Interface, enabled, roo
...
@@ -44,12 +47,14 @@ func Register(ctx context.Context, kubernetes kubernetes.Interface, enabled, roo
nodeCache
:
clients
.
Node
.
Cache
(),
nodeCache
:
clients
.
Node
.
Cache
(),
podCache
:
clients
.
Pod
.
Cache
(),
podCache
:
clients
.
Pod
.
Cache
(),
processor
:
objectset
.
NewProcessor
(
"svccontroller"
)
.
processor
:
objectset
.
NewProcessor
(
"svccontroller"
)
.
Client
(
appClients
.
D
eploymen
t
),
Client
(
appClients
.
D
aemonSe
t
),
serviceCache
:
clients
.
Service
.
Cache
(),
serviceCache
:
clients
.
Service
.
Cache
(),
services
:
kubernetes
.
CoreV1
(),
services
:
kubernetes
.
CoreV1
(),
daemonsets
:
kubernetes
.
AppsV1
(),
}
}
clients
.
Service
.
OnChange
(
ctx
,
"svccontroller"
,
h
.
onChange
)
clients
.
Service
.
OnChange
(
ctx
,
"svccontroller"
,
h
.
onChangeService
)
clients
.
Node
.
OnChange
(
ctx
,
"svccontroller"
,
h
.
onChangeNode
)
changeset
.
Watch
(
ctx
,
"svccontroller-watcher"
,
changeset
.
Watch
(
ctx
,
"svccontroller-watcher"
,
h
.
onResourceChange
,
h
.
onResourceChange
,
clients
.
Service
,
clients
.
Service
,
...
@@ -67,6 +72,7 @@ type handler struct {
...
@@ -67,6 +72,7 @@ type handler struct {
processor
*
objectset
.
Processor
processor
*
objectset
.
Processor
serviceCache
coreclient
.
ServiceClientCache
serviceCache
coreclient
.
ServiceClientCache
services
coregetter
.
ServicesGetter
services
coregetter
.
ServicesGetter
daemonsets
v1getter
.
DaemonSetsGetter
}
}
func
(
h
*
handler
)
onResourceChange
(
name
,
namespace
string
,
obj
runtime
.
Object
)
([]
changeset
.
Key
,
error
)
{
func
(
h
*
handler
)
onResourceChange
(
name
,
namespace
string
,
obj
runtime
.
Object
)
([]
changeset
.
Key
,
error
)
{
...
@@ -101,7 +107,7 @@ func (h *handler) onResourceChange(name, namespace string, obj runtime.Object) (
...
@@ -101,7 +107,7 @@ func (h *handler) onResourceChange(name, namespace string, obj runtime.Object) (
},
nil
},
nil
}
}
func
(
h
*
handler
)
onChange
(
svc
*
core
.
Service
)
(
runtime
.
Object
,
error
)
{
func
(
h
*
handler
)
onChange
Service
(
svc
*
core
.
Service
)
(
runtime
.
Object
,
error
)
{
if
svc
.
Spec
.
Type
!=
core
.
ServiceTypeLoadBalancer
||
svc
.
Spec
.
ClusterIP
==
""
||
if
svc
.
Spec
.
Type
!=
core
.
ServiceTypeLoadBalancer
||
svc
.
Spec
.
ClusterIP
==
""
||
svc
.
Spec
.
ClusterIP
==
"None"
{
svc
.
Spec
.
ClusterIP
==
"None"
{
return
svc
,
nil
return
svc
,
nil
...
@@ -116,6 +122,18 @@ func (h *handler) onChange(svc *core.Service) (runtime.Object, error) {
...
@@ -116,6 +122,18 @@ func (h *handler) onChange(svc *core.Service) (runtime.Object, error) {
return
nil
,
err
return
nil
,
err
}
}
func
(
h
*
handler
)
onChangeNode
(
node
*
core
.
Node
)
(
runtime
.
Object
,
error
)
{
if
_
,
ok
:=
node
.
Labels
[
daemonsetNodeLabel
];
!
ok
{
return
node
,
nil
}
if
err
:=
h
.
updateDaemonSets
();
err
!=
nil
{
return
node
,
err
}
return
node
,
nil
}
func
(
h
*
handler
)
updateService
(
svc
*
core
.
Service
)
(
runtime
.
Object
,
error
)
{
func
(
h
*
handler
)
updateService
(
svc
*
core
.
Service
)
(
runtime
.
Object
,
error
)
{
pods
,
err
:=
h
.
podCache
.
List
(
svc
.
Namespace
,
labels
.
SelectorFromSet
(
map
[
string
]
string
{
pods
,
err
:=
h
.
podCache
.
List
(
svc
.
Namespace
,
labels
.
SelectorFromSet
(
map
[
string
]
string
{
svcNameLabel
:
svc
.
Name
,
svcNameLabel
:
svc
.
Name
,
...
@@ -200,43 +218,27 @@ func (h *handler) podIPs(pods []*core.Pod) ([]string, error) {
...
@@ -200,43 +218,27 @@ func (h *handler) podIPs(pods []*core.Pod) ([]string, error) {
}
}
func
(
h
*
handler
)
deployPod
(
svc
*
core
.
Service
)
error
{
func
(
h
*
handler
)
deployPod
(
svc
*
core
.
Service
)
error
{
objs
:=
objectset
.
NewObjectSet
()
objs
:=
objectset
.
NewObjectSet
()
if
!
h
.
enabled
{
if
!
h
.
enabled
{
return
h
.
processor
.
NewDesiredSet
(
svc
,
objs
)
.
Apply
()
return
h
.
processor
.
NewDesiredSet
(
svc
,
objs
)
.
Apply
()
}
}
d
ep
,
err
:=
h
.
newDeploymen
t
(
svc
)
d
s
,
err
:=
h
.
newDaemonSe
t
(
svc
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
if
d
ep
!=
nil
{
if
d
s
!=
nil
{
objs
.
Add
(
d
ep
)
objs
.
Add
(
d
s
)
}
}
return
h
.
processor
.
NewDesiredSet
(
svc
,
objs
)
.
Apply
()
return
h
.
processor
.
NewDesiredSet
(
svc
,
objs
)
.
Apply
()
}
}
func
(
h
*
handler
)
newD
eployment
(
svc
*
core
.
Service
)
(
*
apps
.
Deploymen
t
,
error
)
{
func
(
h
*
handler
)
newD
aemonSet
(
svc
*
core
.
Service
)
(
*
apps
.
DaemonSe
t
,
error
)
{
name
:=
fmt
.
Sprintf
(
"svclb-%s"
,
svc
.
Name
)
name
:=
fmt
.
Sprintf
(
"svclb-%s"
,
svc
.
Name
)
zeroInt
:=
intstr
.
FromInt
(
0
)
oneInt
:=
intstr
.
FromInt
(
1
)
oneInt
:=
intstr
.
FromInt
(
1
)
replicas
:=
int32
(
0
)
nodes
,
err
:=
h
.
nodeCache
.
List
(
""
,
labels
.
Everything
())
if
err
!=
nil
{
return
nil
,
err
}
for
_
,
node
:=
range
nodes
{
ds
:=
&
apps
.
DaemonSet
{
if
Ready
.
IsTrue
(
node
)
{
replicas
++
}
if
replicas
>=
2
{
break
}
}
dep
:=
&
apps
.
Deployment
{
ObjectMeta
:
meta
.
ObjectMeta
{
ObjectMeta
:
meta
.
ObjectMeta
{
Name
:
name
,
Name
:
name
,
Namespace
:
svc
.
Namespace
,
Namespace
:
svc
.
Namespace
,
...
@@ -249,13 +251,15 @@ func (h *handler) newDeployment(svc *core.Service) (*apps.Deployment, error) {
...
@@ -249,13 +251,15 @@ func (h *handler) newDeployment(svc *core.Service) (*apps.Deployment, error) {
Controller
:
&
trueVal
,
Controller
:
&
trueVal
,
},
},
},
},
Labels
:
map
[
string
]
string
{
nodeSelectorLabel
:
"false"
,
},
},
},
TypeMeta
:
meta
.
TypeMeta
{
TypeMeta
:
meta
.
TypeMeta
{
Kind
:
"D
eploymen
t"
,
Kind
:
"D
aemonSe
t"
,
APIVersion
:
"apps/v1"
,
APIVersion
:
"apps/v1"
,
},
},
Spec
:
apps
.
DeploymentSpec
{
Spec
:
apps
.
DaemonSetSpec
{
Replicas
:
&
replicas
,
Selector
:
&
meta
.
LabelSelector
{
Selector
:
&
meta
.
LabelSelector
{
MatchLabels
:
map
[
string
]
string
{
MatchLabels
:
map
[
string
]
string
{
"app"
:
name
,
"app"
:
name
,
...
@@ -269,10 +273,9 @@ func (h *handler) newDeployment(svc *core.Service) (*apps.Deployment, error) {
...
@@ -269,10 +273,9 @@ func (h *handler) newDeployment(svc *core.Service) (*apps.Deployment, error) {
},
},
},
},
},
},
Strategy
:
apps
.
DeploymentStrategy
{
UpdateStrategy
:
apps
.
DaemonSetUpdateStrategy
{
Type
:
apps
.
RollingUpdateDeploymentStrategyType
,
Type
:
apps
.
RollingUpdateDaemonSetStrategyType
,
RollingUpdate
:
&
apps
.
RollingUpdateDeployment
{
RollingUpdate
:
&
apps
.
RollingUpdateDaemonSet
{
MaxSurge
:
&
zeroInt
,
MaxUnavailable
:
&
oneInt
,
MaxUnavailable
:
&
oneInt
,
},
},
},
},
...
@@ -319,8 +322,44 @@ func (h *handler) newDeployment(svc *core.Service) (*apps.Deployment, error) {
...
@@ -319,8 +322,44 @@ func (h *handler) newDeployment(svc *core.Service) (*apps.Deployment, error) {
},
},
}
}
dep
.
Spec
.
Template
.
Spec
.
Containers
=
append
(
dep
.
Spec
.
Template
.
Spec
.
Containers
,
container
)
ds
.
Spec
.
Template
.
Spec
.
Containers
=
append
(
ds
.
Spec
.
Template
.
Spec
.
Containers
,
container
)
}
// Add node selector only if label "svccontroller.k3s.cattle.io/enablelb" exists on the nodes
selector
,
err
:=
labels
.
Parse
(
daemonsetNodeLabel
)
if
err
!=
nil
{
return
nil
,
err
}
nodesWithLabel
,
err
:=
h
.
nodeCache
.
List
(
""
,
selector
)
if
err
!=
nil
{
return
nil
,
err
}
if
len
(
nodesWithLabel
)
>
0
{
ds
.
Spec
.
Template
.
Spec
.
NodeSelector
=
map
[
string
]
string
{
daemonsetNodeLabel
:
"true"
,
}
ds
.
Labels
[
nodeSelectorLabel
]
=
"true"
}
return
ds
,
nil
}
func
(
h
*
handler
)
updateDaemonSets
()
error
{
daemonsets
,
err
:=
h
.
daemonsets
.
DaemonSets
(
""
)
.
List
(
meta
.
ListOptions
{
LabelSelector
:
nodeSelectorLabel
+
"=false"
,
})
if
err
!=
nil
{
return
err
}
for
_
,
ds
:=
range
daemonsets
.
Items
{
ds
.
Spec
.
Template
.
Spec
.
NodeSelector
=
map
[
string
]
string
{
daemonsetNodeLabel
:
"true"
,
}
ds
.
Labels
[
nodeSelectorLabel
]
=
"true"
if
_
,
err
:=
h
.
daemonsets
.
DaemonSets
(
ds
.
Namespace
)
.
Update
(
&
ds
);
err
!=
nil
{
return
err
}
}
}
return
dep
,
nil
return
nil
}
}
types/apis/apps/v1/zz_generated_d
eploymen
t_controller.go
→
types/apis/apps/v1/zz_generated_d
aemon_se
t_controller.go
View file @
875ba289
This diff is collapsed.
Click to expand it.
types/apis/apps/v1/zz_generated_d
eploymen
t_lifecycle_adapter.go
→
types/apis/apps/v1/zz_generated_d
aemon_se
t_lifecycle_adapter.go
View file @
875ba289
...
@@ -6,54 +6,54 @@ import (
...
@@ -6,54 +6,54 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
)
)
type
D
eploymen
tLifecycle
interface
{
type
D
aemonSe
tLifecycle
interface
{
Create
(
obj
*
v1
.
D
eploymen
t
)
(
runtime
.
Object
,
error
)
Create
(
obj
*
v1
.
D
aemonSe
t
)
(
runtime
.
Object
,
error
)
Remove
(
obj
*
v1
.
D
eploymen
t
)
(
runtime
.
Object
,
error
)
Remove
(
obj
*
v1
.
D
aemonSe
t
)
(
runtime
.
Object
,
error
)
Updated
(
obj
*
v1
.
D
eploymen
t
)
(
runtime
.
Object
,
error
)
Updated
(
obj
*
v1
.
D
aemonSe
t
)
(
runtime
.
Object
,
error
)
}
}
type
d
eploymen
tLifecycleAdapter
struct
{
type
d
aemonSe
tLifecycleAdapter
struct
{
lifecycle
D
eploymen
tLifecycle
lifecycle
D
aemonSe
tLifecycle
}
}
func
(
w
*
d
eploymen
tLifecycleAdapter
)
HasCreate
()
bool
{
func
(
w
*
d
aemonSe
tLifecycleAdapter
)
HasCreate
()
bool
{
o
,
ok
:=
w
.
lifecycle
.
(
lifecycle
.
ObjectLifecycleCondition
)
o
,
ok
:=
w
.
lifecycle
.
(
lifecycle
.
ObjectLifecycleCondition
)
return
!
ok
||
o
.
HasCreate
()
return
!
ok
||
o
.
HasCreate
()
}
}
func
(
w
*
d
eploymen
tLifecycleAdapter
)
HasFinalize
()
bool
{
func
(
w
*
d
aemonSe
tLifecycleAdapter
)
HasFinalize
()
bool
{
o
,
ok
:=
w
.
lifecycle
.
(
lifecycle
.
ObjectLifecycleCondition
)
o
,
ok
:=
w
.
lifecycle
.
(
lifecycle
.
ObjectLifecycleCondition
)
return
!
ok
||
o
.
HasFinalize
()
return
!
ok
||
o
.
HasFinalize
()
}
}
func
(
w
*
d
eploymen
tLifecycleAdapter
)
Create
(
obj
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
func
(
w
*
d
aemonSe
tLifecycleAdapter
)
Create
(
obj
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
o
,
err
:=
w
.
lifecycle
.
Create
(
obj
.
(
*
v1
.
D
eploymen
t
))
o
,
err
:=
w
.
lifecycle
.
Create
(
obj
.
(
*
v1
.
D
aemonSe
t
))
if
o
==
nil
{
if
o
==
nil
{
return
nil
,
err
return
nil
,
err
}
}
return
o
,
err
return
o
,
err
}
}
func
(
w
*
d
eploymen
tLifecycleAdapter
)
Finalize
(
obj
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
func
(
w
*
d
aemonSe
tLifecycleAdapter
)
Finalize
(
obj
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
o
,
err
:=
w
.
lifecycle
.
Remove
(
obj
.
(
*
v1
.
D
eploymen
t
))
o
,
err
:=
w
.
lifecycle
.
Remove
(
obj
.
(
*
v1
.
D
aemonSe
t
))
if
o
==
nil
{
if
o
==
nil
{
return
nil
,
err
return
nil
,
err
}
}
return
o
,
err
return
o
,
err
}
}
func
(
w
*
d
eploymen
tLifecycleAdapter
)
Updated
(
obj
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
func
(
w
*
d
aemonSe
tLifecycleAdapter
)
Updated
(
obj
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
o
,
err
:=
w
.
lifecycle
.
Updated
(
obj
.
(
*
v1
.
D
eploymen
t
))
o
,
err
:=
w
.
lifecycle
.
Updated
(
obj
.
(
*
v1
.
D
aemonSe
t
))
if
o
==
nil
{
if
o
==
nil
{
return
nil
,
err
return
nil
,
err
}
}
return
o
,
err
return
o
,
err
}
}
func
NewD
eploymentLifecycleAdapter
(
name
string
,
clusterScoped
bool
,
client
DeploymentInterface
,
l
DeploymentLifecycle
)
Deploymen
tHandlerFunc
{
func
NewD
aemonSetLifecycleAdapter
(
name
string
,
clusterScoped
bool
,
client
DaemonSetInterface
,
l
DaemonSetLifecycle
)
DaemonSe
tHandlerFunc
{
adapter
:=
&
d
eploymen
tLifecycleAdapter
{
lifecycle
:
l
}
adapter
:=
&
d
aemonSe
tLifecycleAdapter
{
lifecycle
:
l
}
syncFn
:=
lifecycle
.
NewObjectLifecycleAdapter
(
name
,
clusterScoped
,
adapter
,
client
.
ObjectClient
())
syncFn
:=
lifecycle
.
NewObjectLifecycleAdapter
(
name
,
clusterScoped
,
adapter
,
client
.
ObjectClient
())
return
func
(
key
string
,
obj
*
v1
.
D
eploymen
t
)
(
runtime
.
Object
,
error
)
{
return
func
(
key
string
,
obj
*
v1
.
D
aemonSe
t
)
(
runtime
.
Object
,
error
)
{
newObj
,
err
:=
syncFn
(
key
,
obj
)
newObj
,
err
:=
syncFn
(
key
,
obj
)
if
o
,
ok
:=
newObj
.
(
runtime
.
Object
);
ok
{
if
o
,
ok
:=
newObj
.
(
runtime
.
Object
);
ok
{
return
o
,
err
return
o
,
err
...
...
types/apis/apps/v1/zz_generated_deepcopy.go
View file @
875ba289
...
@@ -6,13 +6,13 @@ import (
...
@@ -6,13 +6,13 @@ import (
)
)
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
D
eploymentList
)
DeepCopyInto
(
out
*
Deploymen
tList
)
{
func
(
in
*
D
aemonSetList
)
DeepCopyInto
(
out
*
DaemonSe
tList
)
{
*
out
=
*
in
*
out
=
*
in
out
.
TypeMeta
=
in
.
TypeMeta
out
.
TypeMeta
=
in
.
TypeMeta
out
.
ListMeta
=
in
.
ListMeta
out
.
ListMeta
=
in
.
ListMeta
if
in
.
Items
!=
nil
{
if
in
.
Items
!=
nil
{
in
,
out
:=
&
in
.
Items
,
&
out
.
Items
in
,
out
:=
&
in
.
Items
,
&
out
.
Items
*
out
=
make
([]
appsv1
.
D
eploymen
t
,
len
(
*
in
))
*
out
=
make
([]
appsv1
.
D
aemonSe
t
,
len
(
*
in
))
for
i
:=
range
*
in
{
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
...
@@ -20,18 +20,18 @@ func (in *DeploymentList) DeepCopyInto(out *DeploymentList) {
...
@@ -20,18 +20,18 @@ func (in *DeploymentList) DeepCopyInto(out *DeploymentList) {
return
return
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new D
eploymen
tList.
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new D
aemonSe
tList.
func
(
in
*
D
eploymentList
)
DeepCopy
()
*
Deploymen
tList
{
func
(
in
*
D
aemonSetList
)
DeepCopy
()
*
DaemonSe
tList
{
if
in
==
nil
{
if
in
==
nil
{
return
nil
return
nil
}
}
out
:=
new
(
D
eploymen
tList
)
out
:=
new
(
D
aemonSe
tList
)
in
.
DeepCopyInto
(
out
)
in
.
DeepCopyInto
(
out
)
return
out
return
out
}
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func
(
in
*
D
eploymen
tList
)
DeepCopyObject
()
runtime
.
Object
{
func
(
in
*
D
aemonSe
tList
)
DeepCopyObject
()
runtime
.
Object
{
if
c
:=
in
.
DeepCopy
();
c
!=
nil
{
if
c
:=
in
.
DeepCopy
();
c
!=
nil
{
return
c
return
c
}
}
...
...
types/apis/apps/v1/zz_generated_k8s_client.go
View file @
875ba289
...
@@ -20,13 +20,13 @@ type Interface interface {
...
@@ -20,13 +20,13 @@ type Interface interface {
RESTClient
()
rest
.
Interface
RESTClient
()
rest
.
Interface
controller
.
Starter
controller
.
Starter
D
eploymen
tsGetter
D
aemonSe
tsGetter
}
}
type
Clients
struct
{
type
Clients
struct
{
Interface
Interface
Interface
Interface
D
eployment
Deploymen
tClient
D
aemonSet
DaemonSe
tClient
}
}
type
Client
struct
{
type
Client
struct
{
...
@@ -34,7 +34,7 @@ type Client struct {
...
@@ -34,7 +34,7 @@ type Client struct {
restClient
rest
.
Interface
restClient
rest
.
Interface
starters
[]
controller
.
Starter
starters
[]
controller
.
Starter
d
eploymentControllers
map
[
string
]
Deploymen
tController
d
aemonSetControllers
map
[
string
]
DaemonSe
tController
}
}
func
Factory
(
ctx
context
.
Context
,
config
rest
.
Config
)
(
context
.
Context
,
controller
.
Starter
,
error
)
{
func
Factory
(
ctx
context
.
Context
,
config
rest
.
Config
)
(
context
.
Context
,
controller
.
Starter
,
error
)
{
...
@@ -70,8 +70,8 @@ func NewClientsFromInterface(iface Interface) *Clients {
...
@@ -70,8 +70,8 @@ func NewClientsFromInterface(iface Interface) *Clients {
return
&
Clients
{
return
&
Clients
{
Interface
:
iface
,
Interface
:
iface
,
D
eployment
:
&
deploymen
tClient2
{
D
aemonSet
:
&
daemonSe
tClient2
{
iface
:
iface
.
D
eploymen
ts
(
""
),
iface
:
iface
.
D
aemonSe
ts
(
""
),
},
},
}
}
}
}
...
@@ -89,7 +89,7 @@ func NewForConfig(config rest.Config) (Interface, error) {
...
@@ -89,7 +89,7 @@ func NewForConfig(config rest.Config) (Interface, error) {
return
&
Client
{
return
&
Client
{
restClient
:
restClient
,
restClient
:
restClient
,
d
eploymentControllers
:
map
[
string
]
Deploymen
tController
{},
d
aemonSetControllers
:
map
[
string
]
DaemonSe
tController
{},
},
nil
},
nil
}
}
...
@@ -105,13 +105,13 @@ func (c *Client) Start(ctx context.Context, threadiness int) error {
...
@@ -105,13 +105,13 @@ func (c *Client) Start(ctx context.Context, threadiness int) error {
return
controller
.
Start
(
ctx
,
threadiness
,
c
.
starters
...
)
return
controller
.
Start
(
ctx
,
threadiness
,
c
.
starters
...
)
}
}
type
D
eploymen
tsGetter
interface
{
type
D
aemonSe
tsGetter
interface
{
D
eployments
(
namespace
string
)
Deploymen
tInterface
D
aemonSets
(
namespace
string
)
DaemonSe
tInterface
}
}
func
(
c
*
Client
)
D
eployments
(
namespace
string
)
Deploymen
tInterface
{
func
(
c
*
Client
)
D
aemonSets
(
namespace
string
)
DaemonSe
tInterface
{
objectClient
:=
objectclient
.
NewObjectClient
(
namespace
,
c
.
restClient
,
&
D
eploymentResource
,
DeploymentGroupVersionKind
,
deploymen
tFactory
{})
objectClient
:=
objectclient
.
NewObjectClient
(
namespace
,
c
.
restClient
,
&
D
aemonSetResource
,
DaemonSetGroupVersionKind
,
daemonSe
tFactory
{})
return
&
d
eploymen
tClient
{
return
&
d
aemonSe
tClient
{
ns
:
namespace
,
ns
:
namespace
,
client
:
c
,
client
:
c
,
objectClient
:
objectClient
,
objectClient
:
objectClient
,
...
...
types/apis/apps/v1/zz_generated_scheme.go
View file @
875ba289
...
@@ -33,7 +33,7 @@ func addKnownTypes(scheme *runtime.Scheme) error {
...
@@ -33,7 +33,7 @@ func addKnownTypes(scheme *runtime.Scheme) error {
// TODO this gets cleaned up when the types are fixed
// TODO this gets cleaned up when the types are fixed
scheme
.
AddKnownTypes
(
SchemeGroupVersion
,
scheme
.
AddKnownTypes
(
SchemeGroupVersion
,
&
D
eploymen
tList
{},
&
D
aemonSe
tList
{},
)
)
return
nil
return
nil
}
}
types/codegen/main.go
View file @
875ba289
...
@@ -99,7 +99,7 @@ func main() {
...
@@ -99,7 +99,7 @@ func main() {
}
}
if
err
:=
generator
.
ControllersForForeignTypes
(
basePackage
,
appsv1
.
SchemeGroupVersion
,
[]
interface
{}{
if
err
:=
generator
.
ControllersForForeignTypes
(
basePackage
,
appsv1
.
SchemeGroupVersion
,
[]
interface
{}{
appsv1
.
D
eploymen
t
{},
appsv1
.
D
aemonSe
t
{},
},
nil
);
err
!=
nil
{
},
nil
);
err
!=
nil
{
logrus
.
Fatal
(
err
)
logrus
.
Fatal
(
err
)
}
}
...
...
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