github.com/kotalco/kotal@v0.3.0/clients/ethereum2/teku_validator_client.go (about)

     1  package ethereum2
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	ethereum2v1alpha1 "github.com/kotalco/kotal/apis/ethereum2/v1alpha1"
     8  	"github.com/kotalco/kotal/controllers/shared"
     9  	corev1 "k8s.io/api/core/v1"
    10  )
    11  
    12  // TekuValidatorClient is Teku validator client
    13  // https://github.com/Consensys/teku/
    14  type TekuValidatorClient struct {
    15  	validator *ethereum2v1alpha1.Validator
    16  }
    17  
    18  // HomeDir returns container home directory
    19  func (t *TekuValidatorClient) HomeDir() string {
    20  	return TekuHomeDir
    21  }
    22  
    23  // Command returns environment variables for running the client
    24  func (t *TekuValidatorClient) Env() []corev1.EnvVar {
    25  	return nil
    26  }
    27  
    28  // Args returns command line arguments required for client
    29  func (t *TekuValidatorClient) Args() (args []string) {
    30  
    31  	validator := t.validator
    32  
    33  	args = append(args, TekuVC)
    34  
    35  	args = append(args, TekuDataPath, shared.PathData(t.HomeDir()))
    36  
    37  	args = append(args, TekuNetwork, "auto")
    38  
    39  	args = append(args, TekuValidatorsKeystoreLockingEnabled, "false")
    40  
    41  	args = append(args, TekuFeeRecipient, string(validator.Spec.FeeRecipient))
    42  
    43  	if len(validator.Spec.BeaconEndpoints) != 0 {
    44  		args = append(args, TekuBeaconNodeEndpoint, validator.Spec.BeaconEndpoints[0])
    45  	}
    46  
    47  	if validator.Spec.Graffiti != "" {
    48  		args = append(args, TekuGraffiti, validator.Spec.Graffiti)
    49  	}
    50  
    51  	keyPass := []string{}
    52  	for i, keystore := range validator.Spec.Keystores {
    53  		path := fmt.Sprintf("%s/validator-keys/%s", shared.PathSecrets(t.HomeDir()), keystore.SecretName)
    54  		keyPass = append(keyPass, fmt.Sprintf("%s/keystore-%d.json:%s/password.txt", path, i, path))
    55  	}
    56  
    57  	args = append(args, TekuValidatorKeys, strings.Join(keyPass, ","))
    58  
    59  	return args
    60  }
    61  
    62  // Command returns command for running the client
    63  func (t *TekuValidatorClient) Command() (command []string) {
    64  	return
    65  }