github.com/kotalco/kotal@v0.3.0/apis/bitcoin/v1alpha1/node_defaulting_webhook.go (about) 1 package v1alpha1 2 3 import ( 4 "sigs.k8s.io/controller-runtime/pkg/webhook" 5 ) 6 7 // +kubebuilder:webhook:path=/mutate-bitcoin-kotal-io-v1alpha1-node,mutating=true,failurePolicy=fail,groups=bitcoin.kotal.io,resources=nodes,verbs=create;update,versions=v1alpha1,name=mutate-bitcoin-v1alpha1-node.kb.io,sideEffects=None,admissionReviewVersions=v1 8 9 var _ webhook.Defaulter = &Node{} 10 11 func (r *Node) DefaultNodeResources() { 12 if r.Spec.Resources.CPU == "" { 13 r.Spec.Resources.CPU = DefaultNodeCPURequest 14 } 15 16 if r.Spec.Resources.CPULimit == "" { 17 r.Spec.Resources.CPULimit = DefaultNodeCPULimit 18 } 19 20 if r.Spec.Resources.Memory == "" { 21 r.Spec.Resources.Memory = DefaultNodeMemoryRequest 22 } 23 24 if r.Spec.Resources.MemoryLimit == "" { 25 r.Spec.Resources.MemoryLimit = DefaultNodeMemoryLimit 26 } 27 28 if r.Spec.Resources.Storage == "" { 29 r.Spec.Resources.Storage = DefaultNodeStorageRequest 30 } 31 } 32 33 // Default implements webhook.Defaulter so a webhook will be registered for the type 34 func (r *Node) Default() { 35 nodelog.Info("default", "name", r.Name) 36 37 r.DefaultNodeResources() 38 39 if r.Spec.Image == "" { 40 r.Spec.Image = DefaultBitcoinCoreImage 41 } 42 43 if r.Spec.RPCPort == 0 { 44 if r.Spec.Network == Mainnet { 45 r.Spec.RPCPort = DefaultMainnetRPCPort 46 } 47 if r.Spec.Network == Testnet { 48 r.Spec.RPCPort = DefaultTestnetRPCPort 49 } 50 } 51 52 if r.Spec.P2PPort == 0 { 53 if r.Spec.Network == Mainnet { 54 r.Spec.P2PPort = DefaultMainnetP2PPort 55 } 56 if r.Spec.Network == Testnet { 57 r.Spec.P2PPort = DefaultTestnetP2PPort 58 } 59 } 60 61 if r.Spec.Replicas == nil { 62 // constants are not addressable 63 replicas := DefaltReplicas 64 r.Spec.Replicas = &replicas 65 } 66 67 if r.Spec.Listen == nil { 68 // constants are not addressable 69 defaultListen := DefaultListen 70 r.Spec.Listen = &defaultListen 71 } 72 73 if r.Spec.DBCacheSize == 0 { 74 r.Spec.DBCacheSize = DefaultDBCacheSize 75 } 76 77 if r.Spec.MaxConnections == nil { 78 // constants are not addressable 79 maxConnections := DefaultMaxConnections 80 r.Spec.MaxConnections = &maxConnections 81 } 82 83 }