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 }