github.com/kotalco/kotal@v0.3.0/apis/stacks/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-stacks-kotal-io-v1alpha1-node,mutating=true,failurePolicy=fail,groups=stacks.kotal.io,resources=nodes,verbs=create;update,versions=v1alpha1,name=mutate-stacks-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 = DefaultStacksNodeImage
    41  	}
    42  
    43  	if r.Spec.Replicas == nil {
    44  		// constants are not addressable
    45  		replicas := DefaltReplicas
    46  		r.Spec.Replicas = &replicas
    47  	}
    48  
    49  	if r.Spec.P2PPort == 0 {
    50  		r.Spec.P2PPort = DefaultP2PPort
    51  	}
    52  
    53  	if r.Spec.RPCPort == 0 {
    54  		r.Spec.RPCPort = DefaultRPCPort
    55  	}
    56  
    57  }