...
1 package resources
2
3 import (
4 corev1 "k8s.io/api/core/v1"
5 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
6 "k8s.io/apimachinery/pkg/types"
7
8 kubeclienttypes "edge-infra.dev/pkg/sds/lib/k8s/retryclient/types"
9 )
10
11
12 type nodeMod func(*corev1.Node)
13
14
15 type NodeHandlerBuilder struct {
16 nodeHandler *NodeHandler
17 actions []nodeMod
18 }
19
20
21
22 type NodeBuilder struct {
23 NodeHandlerBuilder
24 }
25
26
27 func NewNodeHandlerBuilder() *NodeHandlerBuilder {
28 return &NodeHandlerBuilder{
29 nodeHandler: &NodeHandler{},
30 actions: []nodeMod{},
31 }
32 }
33
34
35 func (b *NodeHandlerBuilder) Build() *NodeHandler {
36 b.nodeHandler.Node = newNode()
37 return b.nodeHandler
38 }
39
40
41 func (b *NodeHandlerBuilder) WithClient(v kubeclienttypes.Retrier) *NodeHandlerBuilder {
42 b.nodeHandler.Client = v
43 return b
44 }
45
46
47 func (b *NodeHandlerBuilder) WithKey(v types.NamespacedName) *NodeHandlerBuilder {
48 b.nodeHandler.Key = v
49 return b
50 }
51
52
53 func (b *NodeHandlerBuilder) HandlesNode() *NodeBuilder {
54 return &NodeBuilder{*b}
55 }
56
57
58 func (b *NodeBuilder) Named(v string) *NodeBuilder {
59 b.NodeHandlerBuilder.actions = append(b.NodeHandlerBuilder.actions, func(s *corev1.Node) {
60 s.Name = v
61 })
62 return b
63 }
64
65
66 func newNode() *corev1.Node {
67 return &corev1.Node{
68 TypeMeta: metav1.TypeMeta{
69 Kind: "Node",
70 APIVersion: "v1",
71 },
72 }
73 }
74
View as plain text