github.com/kotalco/kotal@v0.3.0/apis/near/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-near-kotal-io-v1alpha1-node,mutating=true,failurePolicy=fail,groups=near.kotal.io,resources=nodes,verbs=create;update,versions=v1alpha1,name=mutate-near-v1alpha1-node.kb.io,sideEffects=None,admissionReviewVersions=v1
     8  
     9  var _ webhook.Defaulter = &Node{}
    10  
    11  // Default implements webhook.Defaulter so a webhook will be registered for the type
    12  func (n *Node) Default() {
    13  	nodelog.Info("default", "name", n.Name)
    14  
    15  	if n.Spec.Image == "" {
    16  		n.Spec.Image = DefaultNearImage
    17  	}
    18  
    19  	if n.Spec.Replicas == nil {
    20  		// constants are not addressable
    21  		replicas := DefaltReplicas
    22  		n.Spec.Replicas = &replicas
    23  	}
    24  
    25  	if n.Spec.MinPeers == 0 {
    26  		n.Spec.MinPeers = DefaultMinPeers
    27  	}
    28  
    29  	if n.Spec.RPCPort == 0 {
    30  		n.Spec.RPCPort = DefaultRPCPort
    31  	}
    32  
    33  	if n.Spec.PrometheusPort == 0 {
    34  		n.Spec.PrometheusPort = DefaultPrometheusPort
    35  	}
    36  
    37  	if n.Spec.P2PPort == 0 {
    38  		n.Spec.P2PPort = DefaultP2PPort
    39  	}
    40  
    41  	if n.Spec.CPU == "" {
    42  		n.Spec.CPU = DefaultNodeCPURequest
    43  	}
    44  	if n.Spec.CPULimit == "" {
    45  		n.Spec.CPULimit = DefaultNodeCPULimit
    46  	}
    47  
    48  	if n.Spec.Memory == "" {
    49  		n.Spec.Memory = DefaultNodeMemoryRequest
    50  	}
    51  	if n.Spec.MemoryLimit == "" {
    52  		n.Spec.MemoryLimit = DefaultNodeMemoryLimit
    53  	}
    54  
    55  	if n.Spec.Storage == "" {
    56  		storage := DefaultNodeStorageRequest
    57  		if n.Spec.Archive {
    58  			storage = DefaultArchivalNodeStorageRequest
    59  		}
    60  		n.Spec.Storage = storage
    61  	}
    62  
    63  }