...

Source file src/sigs.k8s.io/kustomize/api/filters/replicacount/replicacount.go

Documentation: sigs.k8s.io/kustomize/api/filters/replicacount

     1  // Copyright 2022 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package replicacount
     5  
     6  import (
     7  	"strconv"
     8  
     9  	"sigs.k8s.io/kustomize/api/filters/fieldspec"
    10  	"sigs.k8s.io/kustomize/api/filters/filtersutil"
    11  	"sigs.k8s.io/kustomize/api/types"
    12  	"sigs.k8s.io/kustomize/kyaml/kio"
    13  	"sigs.k8s.io/kustomize/kyaml/yaml"
    14  )
    15  
    16  // Filter updates/sets replicas fields using the fieldSpecs
    17  type Filter struct {
    18  	Replica   types.Replica   `json:"replica,omitempty" yaml:"replica,omitempty"`
    19  	FieldSpec types.FieldSpec `json:"fieldSpec,omitempty" yaml:"fieldSpec,omitempty"`
    20  
    21  	trackableSetter filtersutil.TrackableSetter
    22  }
    23  
    24  var _ kio.Filter = Filter{}
    25  var _ kio.TrackableFilter = &Filter{}
    26  
    27  // WithMutationTracker registers a callback which will be invoked each time a field is mutated
    28  func (rc *Filter) WithMutationTracker(callback func(key, value, tag string, node *yaml.RNode)) {
    29  	rc.trackableSetter.WithMutationTracker(callback)
    30  }
    31  
    32  func (rc Filter) Filter(nodes []*yaml.RNode) ([]*yaml.RNode, error) {
    33  	return kio.FilterAll(yaml.FilterFunc(rc.run)).Filter(nodes)
    34  }
    35  
    36  func (rc Filter) run(node *yaml.RNode) (*yaml.RNode, error) {
    37  	err := node.PipeE(fieldspec.Filter{
    38  		FieldSpec:  rc.FieldSpec,
    39  		SetValue:   rc.set,
    40  		CreateKind: yaml.ScalarNode, // replicas is a ScalarNode
    41  		CreateTag:  yaml.NodeTagInt,
    42  	})
    43  	return node, err
    44  }
    45  
    46  func (rc Filter) set(node *yaml.RNode) error {
    47  	return rc.trackableSetter.SetEntry("", strconv.FormatInt(rc.Replica.Count, 10), yaml.NodeTagInt)(node)
    48  }
    49  

View as plain text