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

     1  package ethereum2
     2  
     3  import (
     4  	"fmt"
     5  
     6  	ethereum2v1alpha1 "github.com/kotalco/kotal/apis/ethereum2/v1alpha1"
     7  	"github.com/kotalco/kotal/controllers/shared"
     8  	corev1 "k8s.io/api/core/v1"
     9  )
    10  
    11  // PrysmValidatorClient is Prysmatic labs validator client
    12  // https://github.com/prysmaticlabs/prysm
    13  type PrysmValidatorClient struct {
    14  	validator *ethereum2v1alpha1.Validator
    15  }
    16  
    17  // HomeDir returns container home directory
    18  func (t *PrysmValidatorClient) HomeDir() string {
    19  	return PrysmHomeDir
    20  }
    21  
    22  // Command returns environment variables for the client
    23  func (t *PrysmValidatorClient) Env() []corev1.EnvVar {
    24  	return nil
    25  }
    26  
    27  // Args returns command line arguments required for client
    28  func (t *PrysmValidatorClient) Args() (args []string) {
    29  
    30  	validator := t.validator
    31  
    32  	args = append(args, PrysmAcceptTermsOfUse)
    33  
    34  	args = append(args, PrysmDataDir, shared.PathData(t.HomeDir()))
    35  
    36  	args = append(args, PrysmLogging, string(t.validator.Spec.Logging))
    37  
    38  	args = append(args, PrysmWalletDir, fmt.Sprintf("%s/prysm-wallet", shared.PathData(t.HomeDir())))
    39  
    40  	args = append(args, PrysmWalletPasswordFile, fmt.Sprintf("%s/prysm-wallet/prysm-wallet-password.txt", shared.PathSecrets(t.HomeDir())))
    41  
    42  	args = append(args, PrysmFeeRecipient, string(t.validator.Spec.FeeRecipient))
    43  
    44  	args = append(args, fmt.Sprintf("--%s", validator.Spec.Network))
    45  
    46  	if len(validator.Spec.BeaconEndpoints) != 0 {
    47  		args = append(args, PrysmBeaconRPCProvider, validator.Spec.BeaconEndpoints[0])
    48  	}
    49  
    50  	if validator.Spec.Graffiti != "" {
    51  		args = append(args, PrysmGraffiti, validator.Spec.Graffiti)
    52  	}
    53  
    54  	if validator.Spec.CertSecretName != "" {
    55  		args = append(args, PrysmTLSCert, fmt.Sprintf("%s/cert/tls.crt", shared.PathSecrets(t.HomeDir())))
    56  	}
    57  
    58  	return args
    59  }
    60  
    61  // Command returns command for running the client
    62  func (t *PrysmValidatorClient) Command() (command []string) {
    63  	command = []string{"validator"}
    64  	return
    65  }